1

初心者ですが、メイン ウィンドウにドック ウィジェットを配置しました。このドック ウィジェット パネルにはボタンがあります。接続したいのですが、メイン ウィンドウで定義された機能を持つこのボタンは、エラーをスローしました。行う?ありがとう

connect
(
    perfectPanel_->btn_AAA,
    SIGNAL(clicked()),
    this,
    SLOT(on_actionAAA_triggered()),
    Qt::UniqueConnection
);

エラーメッセージは

$PWD/ui_perfectPanel.h: In constructor ‘xixi::xixi()’:
$PWD/ui_perfectPanel.h:71:18: error: ‘QPushButton* Ui_perfectPanel::btn_AAA’ is inaccessible
$PWD/xixi/xixi.cpp:51:25: error: within this context

これをメイン ウィンドウ (xixi.cpp) のツールバー ボタンに接続することができたことに注意してください。

4

1 に答える 1

1

これは、ドック クラス がperfectPanel、生成された ui クラス から非公開で継承されているために発生しUi::perfectPanelます。

class perfectPanel : public QWidget, private Ui::perfectPanel

その継承を公開することはできますが、すべきではありません。代わりに、クラスのシグナル部分を作成しperfectPanel、内部シグナルをボタンからその外部シグナルにルーティングする必要があります。

class perfectPanel ... {
...
signals:
    void AAA_clicked();
};

perfectPanel::perfectPanel() {
     setupUi(this);
     connect(btn_AAA, SIGNAL(clicked()), this, SIGNAL(AAA_clicked()));
}

(そして、あなたが尋ねた場合、はい、2つの信号を一緒に接続できます).

次に、メイン ウィンドウ クラス内で新しいシグナルを接続するだけです。

connect(perfectPanel_, 
    SIGNAL(AAA_clicked()), 
    this,
    SLOT(on_actionAAA_triggered()),
    Qt::UniqueConnection
);
于 2013-01-04T01:02:08.397 に答える