Qt表单中是否有更改事件
Is there in Qt forms onChange event?
Qt中有类似德尔福Form.onChange
的东西吗?
我找到了一些changeEvent
的方法,但是当我写连接时 connect(this, SIGNAL(this->changeEvent),this, SLOT(checkIfSomethingChanged()));
并试图像那样检查它
void importdb_module::checkIfSomethingChanged(){
QMessageBox::information(0, "", "Test");
}
我意识到它不起作用。
每当我的表格发生变化时,我想检查一些条件,该怎么做?
changeEvent 插槽是 QWidget 中受保护的虚拟函数。因此,如果从 QWidget 或任何 QWidget 派生类继承,则可以重写该函数。例如:-
class MyForm : public QWidget
{
protected slots:
virtual void changeEvent(QEvent * event);
}
void MyForm::changeEvent(QEvent* event)
{
// Do something with the event
}
如果您想在事件之外知道表单已被更改,您可以向表单添加一个信号并从 changeEvent 发出该信号以传递事件:-
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 connect 语法将另一个类连接到新信号:-
connect(myFormObject, &MyForm::FormChanged, someclassObject, &SomeClass::HandleFormChanged);
这是行不通的,因为你混淆了两个概念:事件和信号/插槽。要使其工作,您需要覆盖类的changeEvent()
虚函数。像这样:
void MyWidget::changeEvent(QEvent *event)
{
QMessageBox::information(0, "", "Test");
}
相关文章:
- 如果事件在仍在执行时再次设置,RegisterWaitForSingleObject 是否会并行运行回调?
- 创建的事件数量是否有限制?
- 是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
- 是否可以在C++(17)中捕获某些对象属性的破坏性赋值事件
- epoll_wait() 是否报告所有关闭的套接字事件
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- 在使用 Poll() 的 TCP 服务器 - 客户端连接中,我是否需要手动设置事件?我从来没有到达 POLLOUT 来写
- 是否可以捕获全局鼠标事件
- 是否可以使用 select(2) 来监视 SDL 文本输入事件
- 是否有任何对象可以用作FIFO和弹出数据的事件
- 是否可以在 wxFrame 中捕获鼠标事件
- 如何调试是否设置了 Windows 事件对象
- 是否可以触发由 Minko 中的 HTML 事件启动的 C++ 代码
- 键盘事件:订单是否得到保证
- Qt表单中是否有更改事件
- 是否可以在不调用 QApplication::exec() 的情况下创建本地事件循环
- 是否可以在 MFC 按钮控件上检测到鼠标右键单击事件
- 是否可以捕获翻译/调度消息循环中的窗口消息/事件
- ZeroMQ是否有数据到达时的通知/回调事件/消息
- 如何在VC++中不使用.NET Framework来确定特定事件日志是否存在