Qt 保存指向mainwindow的指针-Qevent

Qt 保存指向mainwindow的指针-Qevent,qt,qevent,Qt,Qevent,我需要将事件从线程发布到主窗口中的QtreeView。现在要发布事件,我们需要指向Qobject的指针(即主窗口内的qtreeview) 为此,我必须在构造函数mainwindow::mainwindow()中获取指向我的mainwindow的指针 sharedobj.h文件包含指向主窗口的指针:---- Mainwindow类包含以下对象:--- 主窗口构造函数:----- 请建议将指针指向主窗口是否正确 我还可以在另一个sharedobj.h文件中包含文件“ui_mainwindow.h”来

我需要将事件从线程发布到主窗口中的QtreeView。现在要发布事件,我们需要指向Qobject的指针(即主窗口内的qtreeview)

为此,我必须在构造函数mainwindow::mainwindow()中获取指向我的mainwindow的指针

sharedobj.h文件包含指向主窗口的指针:----

Mainwindow类包含以下对象:---

主窗口构造函数:-----

请建议将指针指向主窗口是否正确


我还可以在另一个sharedobj.h文件中包含文件“ui_mainwindow.h”来访问mainwindow的命名空间ui,以声明指针,就像我在“sharedobj.h”文件中所做的那样?

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

因此:

  • 将事件发布到Mainwindow实例

  • 重新实现
    main窗口::customEvent(…)
    如下所示(如果它是自定义QEvent,否则您将重新实现
    event(…)


  • 地球,为什么你需要发送一个事件到一个视图?

    为什么你必须直接从线程中发布事件?我会考虑线程之间的信号/时隙,然后在主线程中发布事件。
    #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);
    
    void MainWindow::customEvent(QEvent * ev) {
      if (ev->type() == MyEventType) {
        QCoreApplication::sendEvent(ui->treeView, ev);
      }
    }