Qt表单上有更改事件吗?
在Delphi中是否有Qt类似 Form.onChange
?
Is there in Qt something like Form.onChange
in Delphi?
我发现一些 changeEvent
方法,但是当我写连接 connect这个,SIGNAL(this-> changeEvent),这个,SLOT(checkIfSomethingChanged()));
I found some changeEvent
method but when I wrote connect
connect(this, SIGNAL(this->changeEvent),this, SLOT(checkIfSomethingChanged()));
,并试图检查它
void importdb_module::checkIfSomethingChanged(){
QMessageBox::information(0, "", "Test");
}
我意识到不起作用。
我想检查一些条件,每当我的形式发生变化时,如何做?
I want to check some condition everytime when something changed in my form, how to do that?
changeEvent插槽是在QWidget中找到的一个虚拟的受保护的函数。因此,如果您继承QWidget或任何QWidget派生类,则可以覆盖该函数。例如: -
The changeEvent slot is a virtual, protected function found in QWidget. Therefore, if you inherit from QWidget or any QWidget derived class, you'll be able to override that function. For example: -
class MyForm : public QWidget
{
protected slots:
virtual void changeEvent(QEvent * event);
}
void MyForm::changeEvent(QEvent* event)
{
// Do something with the event
}
如果您想在事件之外知道表单已更改,您可以向形式并从changeEvent发送以传递事件: -
If you wanted to know outside of the event that the form has been changed, you can add a signal to the form and emit it from the changeEvent to pass the event on: -
class MyForm : public QWidget
{
signals:
void FormChanged(QEvent* event);
protected slots:
virtual void changeEvent(QEvent * event);
}
void MyForm::changeEvent(QEvent* event)
{
emit FormChanged(event);
}
现在使用Qt 5连接语法将另一个类连接到新信号:
Now connect another class to the new signal, using Qt 5 connect syntax: -
connect(myFormObject, &MyForm::FormChanged, someclassObject, &SomeClass::HandleFormChanged);