簡體   English   中英

沒有這樣的插槽/信號(Qt)

[英]No such Slot/Signals (Qt)

對象::連接:沒有這樣的信號RollsRoyceTab :: signal_aValueChange(int aValue)??????

我有

class RollsRoyceTab : public QWidget
 {
     Q_OBJECT
 public:
     RollsRoyceTab(QWidget *parent = 0);
 public slots:
     void aValueChange(int);
     void bValueChange(int);
     void cValueChange(int);
     void rrValuesHolder(int aValue, int bValue, int cValue);
signals:
     void signal_aValueChange(int aValue);
     void signal_bValueChange(int bValue);
     void signal_cValueChange(int cValue);
 private:
.........
     int aValue, bValue, cValue;
 };

............
connect(this,SIGNAL(signal_aValueChange(int aValue)),this,SLOT(rrValuesHolder(int aValue, int bValue, int cValue))); 
 }

 void RollsRoyceTab::aValueChange(int aValue)
 {
     lcdAL->display(aValue);
     lcdAR->display(100 - aValue);

     emit signal_aValueChange(aValue);
 }

void RollsRoyceTab::rrValuesHolder(int aValue, int bValue, int cValue)
 {
     qDebug() << aValue;
     qDebug() << bValue;
     qDebug() << cValue;

 }

並連接(...... this,SLOT(rrValuesHolder(int aValue,int bValue,int cValue)))); 還是只需要寫一個值SLOT(rrValuesHolder(int aValue))?

首先:QObject :: connect()中的信號和插槽應該沒有變量名稱。

第二:您無法將信號與帶有三個參數的SLOT連接到一個參數。 SIGNAL的自變量不得少於SLOT。

它應該用於例如:

connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));

這只是對此的解釋。 如果您發出帶有一個自變量的信號(例如QString),插槽將如何知道另外兩個自變量? 對我來說,這是合乎邏輯的。

“ SIGNAL()宏的自變量不得少於傳遞給SLOT()宏的簽名。

所有這些都會起作用:

connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));

這不起作用:

connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));

我相信你應該把value SLOT(rrValuesHolder(int))叫做value SLOT(rrValuesHolder(int))

參考: http : //qt-project.org/doc/qt-4.8/signalsandslots.html

編輯:Blood包括我忽略的另一條信息,Signals和Slots應該沒有變量名地連接!

暫無
暫無

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

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