は、Qtのドキュメントで説明されています。 http://doc.qt.io/archives/qt-4.7/designer-using-a-ui-file.html
概要:.uiファイルを処理するための 最も簡単な方法は、コンパイル時にuic(ユーザーインターフェイスコンパイラ)を介してそれを実行することです。 .uiファイルがプロジェクト(.pro)ファイルに含まれている場合、これは自動的に実行されます。 ( "Add New"はあなたのケースではおそらく自動的にこれを行っています。)そして、生成されたC++ヘッダーファイルをソースファイルに含めるだけです。その名前は "ui_nameoftheoriginaluifile.hpp"のようなものでなければなりません。もちろん、その後、.hppファイルで定義されたフォームをインスタンス化する必要があります。追加するには、編集
:
はあなたのコードを持ついくつかの問題は、その読みやすさから始まる、があります。以前はオブジェクト指向言語を使っていたのかどうか分かりませんが、C++の基本的な規則はクラス名を大文字で始めることで、オブジェクトや他の変数との区別が容易になりました。したがって、クラス名は "About"、 "Parent"などである必要があります。
"ui_about.hpp"ファイルで実際に使用されているクラス名の代わりに "about"を使用するとコンパイルエラーが発生します。 "MainWindow " (これは、.uiファイルで使用したフォームの名前によって決まります)
Qt Creatorを使用している場合は、Ctrlキーを押しながら「ui_about.h」のファイル名をクリックします。 includeディレクティブこれは検査のためにそれを開きます。それがどのように動作するか把握してみてください。
また、opDialog()関数をparent.cppの親クラスのメンバーとして定義していないため、別のコンパイル時エラーが発生します。
また、ダイアログについてはQMainWindowを使用しないでください。 QMainWindowはアプリケーションのメインウィンドウであるはずです。それ以上のインスタンスは存在しないはずです。
ので、about.h:
namespace Ui {
class MainWindow;
}
class about : public QMainWindow {
Q_OBJECT
public:
about(QWidget *parent = 0);
~about();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
};
そしてabout.cppの始まり:
#include "about.h"
#include "ui_about.h"
about::about(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
何が起こったのですか? – Daggerstab