【问题标题】:QLineEdit not release the focus when click in QGroupBox在 QGroupBox 中单击时 QLineEdit 不释放焦点
【发布时间】:2017-12-20 09:02:38
【问题描述】:
    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");
}

上面是demo代码,功能很简单,界面如图。 The GUI interface

在这张图片中,一个 groupBox 包装了 lineEdit 和 pushButton。当我在 LineEdit 中输入一些文本时,然后将鼠标移动到另一个地方,但在 groupBox 内,LineEdit 不会发出 editingfinished() 信号。

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

先谢谢了。

【问题讨论】:

  • 你只是移动鼠标还是点击其他地方?

标签: qt qlineedit qt-signals qgroupbox


【解决方案1】:

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

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

【讨论】:

  • 我找到了问题的关键点,因为只有LineEdit有strongFocus,而它周围的其他小部件没有焦点,所以LineEdit不能再失去焦点了。解决方法是让其他小部件也有焦点、标签焦点、点击焦点或强焦点。这可以很好地工作。
猜你喜欢
  • 1970-01-01
  • 2018-08-31
  • 2010-10-06
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
相关资源
最近更新 更多