如何处理自定义事件
How to handle custom events?
我尝试了以下操作:
event.h
class event : public QEvent
{
public:
int Status1;
int Status2;
static const QEvent::Type StatusChange = static_cast<QEvent::Type>(1155);
//Konstruktor
event(int Status1, int Status2)
: QEvent(StatusChange) {this->Status1 = Status1; this->Status2= Status2; }
}
对话.cpp
#include event.h
#include <QApplication>
#include <QWidget>
void Dialog::on_pushButton2_clicked()
{
QWidget *mainWidget;
foreach(QWidget *widget, QApplication::allWidgets())
{
if(widget->windowTitle().toStdString()=="MainWindow") mainWidget=widget;
}
event::event *e = new event::event(1, 1);
qApp->postEvent(mainWidget, e);
}
主窗口.cpp
#include event.h
void MainWindow::customEvent(event::event *ev)
{
ui->label_2->show();
}
这只是一个测试设置,所以我将修改customEvent
。问题是customEvent
根本没有被触发。将事件更改为QEvent
时,工作正常。是否有其他方法可以更改QEvent
的参数?
QObject
有一个名为void QObject::customEvent( QEvent* ev )
的方法,您的方法不同,因为您用event::event
替换了QEvent
。你不是在替换,而是在超载。当Qt调用MainWindow::customEvent
时,会调用QEvent
版本。
您需要修改您的方法以接受QEvent
参数。然后,您可以强制转换参数,以了解此参数是典型的QEvent
还是您的自定义类。
相关文章:
- 如何解决:自定义QGraphics项目接收鼠标新闻事件坐标延迟/滞后?
- 在UE4中,玩家进行光线投射、击中物体并触发自定义事件C++
- 如何在Maya中选择自定义网格组件后立即发布用户事件
- 处理自定义QT小部件中的输入事件
- WXTREECTRL自定义事件
- wxwidgets 自定义事件不会传播到父窗口
- 在 C++ 中编写自定义事件类
- Qt 中的自定义事件
- Q读取自定义事件
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- Qt:如何使用connect处理自定义事件
- 如何处理自定义事件
- COM c++中的自定义事件处理
- Active X控件自定义事件无法在Javascript中激发
- 我如何使自定义事件与VTK
- Qt中默认控件的自定义事件
- c++中的自定义事件监听器
- 这是实现自定义事件处理程序的正确方法吗?
- 有没有一种更干净的方式来注册Qt自定义事件
- 在运行时创建自定义事件