2017-10-20 11 views
0

このエラーでQtディスカッションのさまざまな部分を見てきましたが、この場合は何が違うのか分かりません。私は正常にGUIの要素の間にスロット/信号のペアを設定しましたが、何らかの理由で最新のスロット/信号の組がエラーを生成しています。Qtスロットと信号:MainWindowのマッチング機能がありません

次にメインウィンドウのスロット

//from MainWindow.h 
class MainWindow : public QMainWindow 
{ 
    private slots: 
    void ReceiveStatus(std::string); 
} 

//from MainWindow.cpp 
void MainWindow::ReceiveStatus(std::string s) 
{ 
    //I can provide other controls, filters, etc. 
    //but currently there are none 
    ui->statusBar->showMessage(tr("System status: "+s)); 
} 
があるすべてのGUI要素がここで

class PanelA : public QWidget 
{ 
    ... 
    public signals: 
    void UpdateStatusBar(std::string); 
    ... 
} 

示すように、私は、各パネルの信号を作成したメインウィンドウのステータスバーを更新することを可能にするために

最後に、MainWindowコンストラクタで私はすでにいくつかの信号を持っており、各GUI要素に新しい接続線を1つ追加しました。

connect(ui->panelA, &PanelA::SelectionChanged, ui->panelB, &PanelB::UpdateSelection); 
//this one works 
connect(ui->panelA, &PanelA::UpdateStatusBar, ui, &MainWindow::ReceiveStatus); 
//this one generates an error there is one status bar connection for each 

これまでのところ、構文が正しいと言うことができます。 ui-> panelAとuiの両方がポインタです。なぜ私は正しいのか分かりません。私は何か提案を感謝します。

答えて

2

は、おそらく次のようになります。

connect(ui->panelA, &PanelA::UpdateStatusBar, this, &MainWindow::ReceiveStatus); 

uiオブジェクトは、メインウィンドウではありませんが、thisになります。

+0

ありがとうございます。私をばかにして、それを見逃す。あなたが正しいです。 Ui :: MainWindow * uiは、メソッドが定義されているMainWindowクラスと同じではありません。 – BSD

関連する問題