0

スレッドからメインウィンドウの 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;

メインウィンドウのコンストラクター:-----

/*!
   Take Pointer to Mainwindow session window
*/

    cntrlObj_obj->ui_ptr->setupUi(this);

Mainwindow へのポインタを取得するのは正しい方法ですか?

また、「sharedobj.h」ファイルで行ったように、mainwindow の名前空間 UI にアクセスしてポインターを宣言するために、別の sharedobj.h ファイル内にファイル「ui_mainwindow.h」を含めることはできますか?

4

1 に答える 1

0

メインウィンドウ内のナレッジをローカライズし、イベントを投稿する必要があります。

そう:

  1. イベントを Mainwindow インスタンスに投稿します。

  2. 次のように再実装します (カスタムQEventMainWindow::customEvent(...)の場合、そうでない場合は再実装しevent(...)ます:

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

悲しいかな、いったいなぜイベントをビューに送信する必要があるのでしょうか?

于 2013-10-03T16:08:38.700 に答える