qt - 如何为 QLineEdit 添加 2 个自定义按钮?
问题描述
我试图为我的行编辑添加两个按钮。仅当行编辑中的文本不为空时才会出现“清除”,并且始终显示“灯泡”。
MyLineEdit.cpp
MyLineEdit::MyLineEdit( QWidget *p_parent ) : QLineEdit( p_parent )
{
m_buttonAction = addAction( QIcon( ":/bulb" ), QLineEdit::TrailingPosition );
QToolButton *button = dynamic_cast<QToolButton *>( m_buttonAction->associatedWidgets().at( 1 ) );
button->setCursor( QCursor( Qt::PointingHandCursor ) );
m_buttonAction->setVisible( true );
m_clearAction = addAction( QIcon( ":/clear" ), QLineEdit::TrailingPosition );
QToolButton *clear = dynamic_cast<QToolButton *>( m_clearAction->associatedWidgets().at( 1 ) );
clear->setCursor( QCursor( Qt::PointingHandCursor ) );
m_clearAction->setVisible( false );
connect( this, &MyLineEdit::textChanged, this, &MyLineEdit::toggleClearButton );
connect( m_clearAction, &QAction::triggered, this, &QLineEdit::clear );
connect(m_buttonAction, &QAction::triggered, this, &MyLineEdit::doSomething);
}
void MyLineEdit::toggleClearButton()
{
text().isEmpty() ? m_clearAction->setVisible( false ) : m_clearAction->setVisible( true );
}
void MyLineEdit::doSomething()
{
}
MyLineEdit.h
class MyLineEdit : public QLineEdit
{
Q_OBJECT
public:
MyLineEdit( QWidget *p_parent = nullptr );
private slots:
void toggleClearButton();
void doSomething();
private:
QAction *m_clearAction = nullptr;
QAction *m_buttonAction = nullptr;
};
为什么开头没有显示“灯泡”,我这里哪里出错了?
解决方案
推荐阅读
- javascript - 如何在 JSP 中刷新页面时重新加载会话属性?
- python - 当我找不到任何错误时,我不断收到语法错误
- java - 键盘不会为 EditText 打开
- python - ModuleNotFoundError:没有名为“项目”的模块
- windows - 是否有适用于 Windows 平台的 OWASP ZAP docker 映像?
- reactjs - 反应 16:未捕获(承诺中)错误:JSON 中位于 A 位置 0 的意外令牌 u
- php - 为什么我的请求在使用 POST 时在 PHP/Laravel 中为空
- math - 有向图的最大数量
- wpf - WPF 数据网格 所选行的背景颜色
- c# - GetComponentInParent () 不改变父组件