Qt - 行编辑输入也会导致按钮操作发生

时间:2012-03-01 20:18:19

标签: qt4

对Qt来说很新,我在我正在编写的应用程序中遇到了这种行为,所以我创建了一个非常简单的应用程序来尝试重现它确实。

单击按钮 - 显示信息消息 在行编辑中输入一些文本并按Enter键 - 出现文本信息框,然后出现按钮信息。我很困惑为什么会这样。

#include "dialog.h"
#include "ui_dialog.h"
#include <QtCore>
#include <QtGui>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
       ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
    QMessageBox::information(this,"PB Test", "I have pushed the button");
}

void Dialog::on_lineEdit_returnPressed()
{
    QMessageBox::information(this,"LineEdit Test", "I entered text");
}

这是dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
    class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private slots:
    void on_pushButton_clicked();

    void on_lineEdit_returnPressed();

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

1 个答案:

答案 0 :(得分:1)

QPushButton是默认按钮,表示每次按Enter键时都会激活它。如果要禁用此行为,则需要对QLineEdit进行子类化并实现过滤输入按下的eventFilter