web-dev-qa-db-ja.com

Qt Creatorでアクションとメニュークリックを接続する方法は?

私はQtを初めて使用します。

私は新しいQt4 GUIアプリケーションから始めました。

デザイナーを使用して、次のようなメニューを作成しました。

File
 - Exit

メニュー項目に関連付けられたアクションを取得するにはどうすればよいですか?

「Signals and Slot Editor」と呼ばれるものを見つけましたが、その使用方法がわかりません。

45
Nathan Osman

信号スロットエディターを選択した後、緑色のプラス記号をクリックします。入力する4つのフィールドが表示されます。送信者は、信号を作成するものを選択します。たとえば、ActionExitは、終了メニュー項目用に作成した名前です。信号はおそらくclick()されます。レシーバは通常、作成したすべてのメソッドを持つクラスです。スロットは、実行するクラスで作成したメソッドです。例えば:

actionExit clicked() <nameOfClass> exitGame()

お役に立てれば。

48
Isawpalmetto

私はこれをなんとか簡単に思える方法で行うことができました。 Qt Creator Action Editorウィンドウに、クリックしたメニュー項目のエントリが表示されます。そのエントリをrt-クリックして「スロットに移動...」を選択し、ポップアップからtriggered()を選択して「OK」をクリックします。 Qt Creatorを使用すると、追加したコードにジャンプします。..qDebugステートメントをそこに配置すると、機能します。

41
user347524

スロットエディターに移動し、ボットテム左側の[アクションエディター]タブをクリックします。すべてのメニューアクションがリストされています。

右クリック->スロットに移動すると、スロット機能が提供されます。

4
Darkproduct

私はこの素晴らしいフォーラムでこの種の質問を2つ3つ見たことがありますが、誰もが非常に混乱しています。

1.メニューバーにメニューとアクションを追加し、mainwindow.hファイルのスロットに次のように関数を追加しますprivate slots: void help();

2.次に、mainwindow.cppに次のコードを追加します。

connect(ui->actionmyactions, SIGNAL(triggered()), this, SLOT(help()));

3.次のコードを使用して、メニューでも同じことができます:

connect(ui->menuHelp, SIGNAL(aboutToShow()), this, SLOT(help()));

4.Qt Designerにアクセスしなくても、次のように目的の結果を得ることができます。

  1. mainwindow.hで次のようにアクションを宣言します

    _QAction *myaction;_

  2. そして、mainwindow.cppに次のコードを追加します

    myaction = ui->mainToolBar->addAction("help"); connect(myaction, SIGNAL(triggered()), this, SLOT(help()));

0
Shaikh Chili