在Qt中,当一个小部件获得焦点时,如何获得有关它的通知,以便我可以执行一些自定义代码?是否有信号或事件?
你可以添加en event filter
.
这是使用QtCreator编写的应用程序的示例.此表单有一个名为combobox的QComboBox.
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) { ui->setupUi(this); ui->comboBox->installEventFilter(this); . . . } bool MainWindow::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::FocusOut) { if (object == ui->comboBox) { qWarning(object->objectName().toLatin1().data()); } } return false; }
Qt Designer不适用于此级别的WYSIWYG编程.
用C++做:
class LineEdit : public QLineEdit { virtual void focusInEvent( QFocusEvent* ) {} };
在焦点改变时发送了一个"focusChanged"信号,在Qt 4.1中引入.
它有两个参数,即小部件失去焦点,一个获得焦点:
void QApplication::focusChanged(QWidget * old, QWidget * now)
最简单的方法是将插槽连接到QApplication :: focusChanged信号.