做项目的时候,很多时候会遇到要在编辑框的右边添加一个按钮,用于弹出其他窗口选择内容后再填入编辑框,一种做法是添加一个QLineEdit再在后面加一个QPushButton然后进行布局,但这样不太好看。
其实QLineEdit是支持在右边添加按钮的。实现代码如下:
QLineEdit* editor = new QLineEdit(parent);
QToolButton* btn = new QToolButton;
btn->setText("...");
btn->setCursor(Qt::ArrowCursor);//如果不设置鼠标样式,鼠标移动到按钮上依旧显示为编辑框的鼠标样式。
QWidgetAction* action = new QWidgetAction(editor);
action->setDefaultWidget(btn);
editor->addAction(action, QLineEdit::TrailingPosition);
connect(btn, &QToolButton::clicked, this, [=]() {
QDialog dlg;
dlg.exec();
});