在qt5中訊號與槽的連線針對qt4有一些改變
qt4中的連線方式是類似這樣的:
qobject::connect(const qobject * sender, const char * signal, const qobject * receiver, const char * method, qt::connectiontype type = qt::autoconnection)
qt5中則是這樣的:
qobject::connect(const qobject * sender, pointertomemberfunction signal, const qobject * receiver, pointertomemberfunction method, qt::connectiontype type)
qt5中是直接利用類名來使用訊號/槽函式。
假如我的類中定義了兩個訊號:
signals:
void mysignal(int inum);
void mysignal(int inum, const qstring& str);
我們可以看到這兩個訊號函式實際上是過載函式。
在qt4中這並不會產生任何問題:
connect(this, signal(mysignal(int)), this, slot(myslot()));
connect(this, signal(mysignal(int, qstring)), this, slot(myslot()));
他能指明我們傳送的是哪乙個訊號。
但是在qt5中,就不一樣了:
connect(this, &***::mysignal, this, &***::myslot);
這樣呼叫我們傳送的到底是
mysignal(int inum);
還是
mysignal(int inum, const qstring& str);
這樣就會產生歧義,那麼我們該如何解決這樣問題呢?
我們可以利用函式指標來區分這兩個訊號函式:
void (***::*mynewsignal) (int inum, const qstring& str) = &***::mysignal;
再次呼叫:
connect(this, &***::mysignal, this, &***::myslot);
connect(this, &***::mynewsignal, this, &***::myslot);
這樣就能區分我們傳送的到底是哪乙個訊號了。
Qt5 使用QtCreator來執行NS3的指令碼
問題提出 現在的情況是,我們使用qt5來進行圖形使用者介面的設計,使用ns3 平台來完成指令碼的執行,實現 模擬。然而,如何使用qt5來直接執行ns3中的指令碼呢?問題解決 有兩種解決方法。第一種方法是直接按照下面這個鏈結中的方法進行 在第二種方法中,鏈結所給網頁介紹了如何執行first.cc,如果...
Qt5位置相關函式
專案名稱 geometry 基類 qdialog 類名 geometry 取消 建立介面 在標頭檔案中宣告所需的控制項 主要為qlabel類 及所需要的函式。ifndef geometry h define geometry h include 以下是新增的 include include clas...
QT5入門之15 qr函式
qr是乙個函式,是用於實現國際化的。setwindowtitle tr hello 如果你為這個程式提供了中文翻譯包 其中hello被翻譯成中文 你好 那麼標題將是中文 你好 如果你為程式提供且使用日文翻譯包,那麼text1的內容將是日文。qstring qmetaobject tr const c...