簡體   English   中英

Qt c ++信號槽無法正常工作

[英]Qt c++ signal slots does not work properly

我的代碼有一個奇怪的行為:

我想設置一個信號槽連接。 當我沒有任何參數時它工作正常。 但是,當我使用參數時,即使像int一樣簡單,我的連接也不起作用。 有沒有人知道為什么會這樣?

謝謝。

這有效:

Chart.h       
  void signalForUI();

Chart.cpp
    emit signalForUI();

Userinterface.h   
    public slots:
      void UI_schreibtWas();

 Userinterface.cpp   

     connect(  ui.Diagram  , SIGNAL( signalForUI()  ),
               this  ,SLOT (UI_schreibtWas()))  ;
  ...

       void UserInterface::UI_schreibtWas()
       {  qDebug() << "ich schreibe was- ohne ";    }

這不是:

Chart.h       
  void signalForUI(const int &X_send);

Chart.cpp
    emit signalForUI(5);        

Userinterface.h   
    public slots:
      void UI_schreibtWas(const int &X_send);

 Userinterface.cpp   

     connect(  ui.Diagram  , SIGNAL( signalForUI(const int &X_send)  ),
               this  ,SLOT (UI_schreibtWas(const int &X_send)))  ;
  ...

      void UserInterface::UI_schreibtWas(const int &X_send)
      {  qDebug() << "ich schreibe was  - int ";    }

您不應該將參數名稱傳遞給connect信號/插槽定義。

connect(ui.Diagram, SIGNAL(signalForUI(const int&)),
        this, SLOT(UI_schreibtWas(const int&)));

但是你應該使用Qt 5語法進行連接,它不使用宏,並允許你在編譯時捕獲這樣的錯誤:

connect(ui.Diagram, &DiagramClass::signalForUI, this, &ThisClass::UI_schreibtWas)

用適當的類名替換DiagramClassThisClass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM