0

QAction(QMenuメンバーエントリ)を使用して新しいウィンドウを開こうとしています。正確に言うと、カスタムスロットに一致するようにactionAbout信号を事前定義したいのですが、それが問題になっています。activatedMainWindowopen 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'の前方宣言
4

1 に答える 1

1
../Application/main_window.cpp:9:13: error: ‘actionAbout’ was not declared in this scope

エラーメッセージはそれをすべて示していますQAction。定義されている場所はどこですか? それはすべきui->actionAboutですか?

connect(actionAbout, SIGNAL(activated()), this, SLOT(openAboutWindow(this));

openAboutWindow()引数を取らずthis、インスタンスは型ではありません。

于 2013-01-26T10:33:10.900 に答える