0

我需要将事件从线程发布到主窗口中的 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”文件中所做的那样?

4

1 回答 1

0

您需要在主窗口中本地化知识,并将事件发布到其中。

所以:

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

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

    void MainWindow::customEvent(QEvent * ev) {
      if (ev->type() == MyEventType) {
        QCoreApplication::sendEvent(ui->treeView, ev);
      }
    }
    

唉,为什么您需要将事件发送到视图?

于 2013-10-03T16:08:38.700 回答