1

複数のウィジェットがあり、それらすべてにメイン メニュー ボタンがあるとします。そこで、すべてのメイン メニュー ボタンのクリック信号を 1 つのスロットに接続しました。

connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));
connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));

そして、私が持っています

private slots:
    void mainClicked();

mainClicked では、クリックされたシグナルをトリガーした人を非表示にしたいと考えています。上記の例では、frame1 または frame2 です。

senter() を使用してシグナルをトリガーした QObject を取得できますが、QWidget 関数である hide を呼び出すにはどうすればよいですか?

あなたの助けに感謝します。

4

2 に答える 2

2

私はこれがうまくいくと思います:

dynamic_cast<QWidget*>(sender()) -> hide() ;
于 2011-05-21T22:56:53.097 に答える
0

QSignalMapperクラスを見てみましょう。基本的に、2 つのウィジェットのclicked()シグナルをmap()シグナル マッパーのスロットに接続すると、単一のmapped(QWidget*)シグナルが送信されます。mainClicked(QWidget*)スロットに接続すると、シグナルを送信したウィジェットが渡されclickedます (実際には、パラメーターを自分で構成できます)。詳細については、Qt のドキュメントを参照してください。

于 2011-05-21T22:58:06.580 に答える