【发布时间】:2013-10-08 20:02:57
【问题描述】:
我需要将一个线程中的事件发布到我的主窗口中的 QtreeView。现在要发布一个事件,我们需要指向 Qobject 的指针(即我们在主窗口中的 qtreeview)。
为此,我必须在构造函数 MainWindow::MainWindow() 中获取指向主窗口的指针。
sharedobj.h 文件包含指向主窗口的指针:----
#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;
}
主窗口类包含以下对象:---
cntrlObj cntrlObj_obj;
主窗口构造函数:-----
/*!
Take Pointer to Mainwindow session window
*/
cntrlObj_obj->ui_ptr->setupUi(this);
请建议将指针指向 Mainwindow 是否正确?
我还可以在另一个 sharedobj.h 文件中包含文件“ui_mainwindow.h”以访问主窗口的命名空间 UI 以声明一个指针,就像我在“sharedobj.h”文件中所做的那样?
【问题讨论】:
-
为什么必须直接从线程发布事件?我会考虑线程之间的信号/插槽,然后在主线程中发布事件。将有关 UI 事务的知识保留在它所属的位置(在主线程中)。