单击QGroupBox时QLineEdit不释放焦点

问题描述 投票:2回答:1
    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和pushButton。当我将一些文本输入LineEdit,然后将鼠标移动到另一个地方,但在groupBox中,LineEdit将不会发出editingfinished()信号。

这种情况意味着lineEdit不会失去焦点。这个问题真的很奇怪。你能告诉我什么是错的吗?

谢谢你。

qt qlineedit qt-signals qgroupbox
1个回答
0
投票

尽管documentation of QLineEdit::editingFinished()没有明确说明,但在这种情况下,焦点意味着keyboard focus,e。 G。按Tab键或Enter,但不将鼠标光标移动到其他位置而不单击其他可聚焦小部件。

如果你想实现不同的行为,不知道你应该怎么说。

© www.soinside.com 2019 - 2024. All rights reserved.