我需要将一个事件从一个线程发布到我的Mainwindow中的QtreeView。现在要发布一个事件,我们需要指向Qobject的指针(即我们在主窗口内的qtreeview)。
为此,我必须在构造函数MainWindow :: MainWindow()中将指针指向我的主窗口。
sharedobj.h文件包含指向mainwindow的指针:----
#include "ui_mainwindow.h"
/*!
Shared object among threads.
*/
class cntrlObj
{
public:
cntrlObj();
~ctrlObj();
/// Thread run control
bool m_bQuit;
/*!
Pointer to mainwindow window
*/
Ui::MainWindow *ui;
}
Mainwindow类包含以下对象:---
cntrlObj cntrlObj_obj;
Mainwindow构造函数:-----
/*!
Take Pointer to Mainwindow session window
*/
cntrlObj_obj->ui_ptr->setupUi(this);
请建议采用指向Mainwindow的正确方法?
我还可以在另一个sharedobj.h文件中包含文件“ui_mainwindow.h”来访问mainwindow的命名空间UI,以声明我在“sharedobj.h”文件中完成的指针吗?
答案 0 :(得分:0)
您需要在Mainwindow中本地化知识,并将事件发布到它。
所以:
将事件发布到Mainwindow实例。
重新实现MainWindow::customEvent(...)
如下(如果它是自定义QEvent,否则您将重新实现event(...)
:
void MainWindow::customEvent(QEvent * ev) {
if (ev->type() == MyEventType) {
QCoreApplication::sendEvent(ui->treeView, ev);
}
}
唉,为什么在地球上你需要向视图发送一个事件?