环境
ubuntu + Qt 4.7
问题描述
键盘按下Enter键时,会触发QDialogButtonBox的clicked信号;
详细
如下图,在设计师界面拖出两个控件,一个QLineEdit,一个QDialogButtonBox。此时可以注意到buttonBox上的确定按钮为橙色。
在cpp中加入代码:
关联buttonBox的clicked信号,在槽函数中进行打印。
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
this->setFocusPolicy(Qt::NoFocus);
ui->buttonBox->clearFocus();
ui->buttonBox->setFocusPolicy(Qt::NoFocus);
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::buttonClicked(QAbstractButton *button)
{
if(button == (QAbstractButton *)(ui->buttonBox->button(QDialogButtonBox::Ok)))
{
qDebug() << "(Button OK has been clicked.)";
}
else if(button == (QAbstractButton *)(ui->buttonBox->button(QDialogButtonBox::Cancel)))
{
qDebug() << "(Button Cancle has been clicked.)";
}
}
实际测试发现:
1. 程勋运行时,QLineEdit的光标是闪烁的,此时可以直接输入数据;
2. 但是按下键盘Enter键时,出现了如下打印:
疑问
1. Enter键为什么会触发这种信号?
2. 有什么方法可以去掉QDialogButtonBox的默认聚焦的按钮吗?