QAction(QMenuメンバーエントリ)を使用して新しいウィンドウを開こうとしています。正確に言うと、カスタムスロットに一致するようにactionAbout
信号を事前定義したいのですが、それが問題になっています。activated
MainWindow
open AboutWindow
ソースのmain_window.cppファイル内でQt関数を手動で使用するか、Qt Creatorでクリックするだけで使用できることはわかっていconnect
ますが、カスタムスロットが表示されないため、選択できません。スロット関数の宣言が間違っている(パラメーターが無効である)可能性があります。そのため、QtCreatorではGUIでカスタムスロットを選択できませんsignals & slots
。QtCreatorにカスタムスロットをドロップダウンに表示させるにはどうすればよいですか?また、接続関数の呼び出しはどのようになりますか?
これは私のmain_window.hファイルの内容です:
#含む #include "about_window.h" 名前空間Ui{ クラスMainWindow; } クラスMainWindow:public QMainWindow {{ Q_OBJECT 公衆: 明示的なMainWindow(QWidget * parent = 0); 〜MainWindow(); パブリックスロット: void openAboutWindow(); プライベート: Ui :: MainWindow * ui; Ui :: AboutWindow * aboutWindow; };
そしてこれはmain_window.cppです:
MainWindow :: MainWindow(QWidget * parent): QMainWindow(親)、 ui(新しいUi :: MainWindow) {{ ui-> setupUi(this); connect(actionAbout、SIGNAL(activate())、this、SLOT(openAboutWindow(this)); } MainWindow ::〜MainWindow() {{ UIを削除します。 } void MainWindow :: openAboutWindow(QWidget * parent) {{ aboutWindow = new Ui :: AboutWindow(parent); //ウィンドウをどこかで破棄してください aboutWindow-> show(); }
コンパイラーはコンストラクターとopenAbutWindowの両方について叫びます:
../Application/main_window.cpp:コンストラクター内'MainWindow :: MainWindow(QWidget *)': ../Application/main_window.cpp:9:13:エラー:'actionAbout'はこのスコープで宣言されていません ../Application/main_window.cpp:9:80:エラー:予期される')'の前に';' トークン ../Application/main_window.cpp:メンバー関数内'void MainWindow :: openAboutWindow(QWidget *)': ../Application/main_window.cpp:19:44:エラー:不完全な型の無効な使用'struct Ui :: AboutWindow' ../Application/about_window.h:7:11:エラー:'struct Ui::AboutWindow'の前方宣言 ../Application/main_window.cpp:20:15:エラー:不完全な型の無効な使用'struct Ui :: AboutWindow' ../Application/about_window.h:7:11:エラー:'struct Ui::AboutWindow'の前方宣言