QT多線程信號和槽參數傳遞


寫了一個這樣的信號

 

void caculateReady( QList<QString> adds, QList<double> hotV, QList<double> coolV);

 

編譯時正常,運行時了現錯誤

Object::connection: Cannot queue arguments of type 'QList<QString>'

(Make sure 'QList<QString>' is registered using qRegisterMetaType().))

原因:自定義的數據類型作為信號槽參數傳遞的時候,需要使用 qRegisterMetaType() 函數對該參數進行注冊

代碼修改如下:

 

  1.  
    //添加文件引用
  2.  
    #include <QMetaType>

 

  1.  
    //注冊參數類型
  2.  
    qRegisterMetaType<QList<QString> > ( "QList<QString>");

 

這樣,這個QList<QString>就可以作為信號參數來傳遞了

F1出現的help文檔中的定義為:

 

  1.  
    int qRegisterMetaType ( const char * typeName )
  2.  
    //實例
  3.  
    qRegisterMetaType<MyClass> ("MyClass");


qRegisterMetaType的返回值為自定義類型的ID

 

 

參考:http://blog.csdn.net/kusey/article/details/7995815


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM