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

问题描述 投票:1回答:1

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
qt4
1个回答
1
投票

QPushButton是一个默认按钮,这意味着每次按Enter键时它都会被激活。如果要禁用此行为,则需要子类化QLineEdit并实现过滤输入按下的eventFilter

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