保存指向主窗口的指针 - Qevent

时间:2013-10-02 12:28:51

标签: qt qevent

我需要将一个事件从一个线程发布到我的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”文件中完成的指针吗?

1 个答案:

答案 0 :(得分:0)

您需要在Mainwindow中本地化知识,并将事件发布到它。

所以:

  1. 将事件发布到Mainwindow实例。

  2. 重新实现MainWindow::customEvent(...)如下(如果它是自定义QEvent,否则您将重新实现event(...)

    void MainWindow::customEvent(QEvent * ev) {
      if (ev->type() == MyEventType) {
        QCoreApplication::sendEvent(ui->treeView, ev);
      }
    }
    
  3. 唉,为什么在地球上你需要向视图发送一个事件?