int main(int ac, char **av)
{
QApplication app(ac, av);
Dialog *dialog = new Dialog();
dialog->show();
return app.exec();
}
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void onLineEdit();
void onButtonClicked();
private:
Ui::Dialog *ui;
};
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(onLineEdit()));
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onButtonClicked()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::onLineEdit() {
qDebug() << QString("line edit finish");
}
void Dialog::onButtonClicked() {
qDebug() << QString("button clicked");
}
以上是演示代码,功能非常简单,界面如图所示。 The GUI interface
在这张图片中,groupBox包装了lineEdit&amp;按钮。当我将一些文本输入LineEdit,然后将鼠标移动到另一个地方,但在groupBox中,LineEdit将不会发出editingfinished()信号。
这种情况意味着lineEdit不会失去焦点。这个问题真的很奇怪。你能告诉我什么是错的吗?
非常感谢。
答案 0 :(得分:0)
虽然documentation of QLineEdit::editingFinished()
没有明确说明,但焦点在这种情况下意味着keyboard focus,e。 G。按 Tab 键或 Enter ,但不要将鼠标光标移动到其他位置而不点击其他可聚焦小部件。
如果您想实施不同的行为,并且不知道应该如何表达。