2011-12-17 6 views
3

私はQtで非常に新しいので、作成した.uiデザイナーフォームをMainWindowのプッシュボタンと接続する方法を尋ねたいと思います。Quitで作成した.uiデザインフォームをbutton.clicked()イベントで呼び出す方法は?

私が行ったこと: 1.新しい.uiデザインフォーム(Forms.rightクリック - >新規追加 - > Qtデザイナーフォーム)を現在のプロジェクトに作成しました。 2.作成された.uiフォームのダイアログを設計しました。 3. MainWindowにスロットのPushButton.clicked()を作成します。

Qtでプログラミングを行ったすべての人にとって、この問題を解決して、プッシュボタンを.uiフォームに接続すると、プッシュボタンは.uiで作成されたフォームを呼び出す/表示できます。

ご協力いただきありがとうございます。 .uiファイルを使用して

+0

何が起こったのですか? – Daggerstab

答えて

4

は、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); 
} 
+0

私は返事が遅くて申し訳ありません。ところで、お返事ありがとうございます。 同様の記事(http://stackoverflow.com/questions/1518317/how-to-show-another-window-from-mainwindow-in-qt)および(http://doc.qtの例.nokia.com/4.7/designer-using-a-ui-file.html)。 私はpushButtonに接続されたAboutウィンドウを開くための簡単なプロジェクトを作成しました。 プロジェクトを(http://www.mediafire.com/?y6z0ub4f0k0fnkd)にアップロードしました。しかし、私はまだ理解できないエラーがあります。 私のプロジェクトを見て、それを解決するために何ができるか教えてください。 非常に感謝しています。ありがとうございます – anarchy99

+0

アーカイブを他の人に送信する場合は、RARよりもポータブルなアーカイブ形式を使用してください。例えば、ZIPはどこでも受け入れ可能です。 – Daggerstab

+0

あなたのコードのコメントで私の回答を編集します。 – Daggerstab

1

長い時間がログインしていない後、私はちょうど今、返信することができます場合、私は非常に残念だよ先生私の大学で私の顔認識プロジェクトを終了しなければならないからです。 ところで、私は多くの "試行錯誤"を試した後に私の質問を解決しましたが、今はそれをうまくやり遂げることができます。 私は、 "button.clicked()イベントでQtで作成された.uiデザインフォームを呼び出す方法"という質問に対してプロジェクトを投稿しました。私の個人的なブログで。

これは投稿リンクhttp://hxr99.blogspot.com/2011/12/how-to-call-ui-design-form-with.htmlです。 ウィンドウを呼び出すためのサンプルプロジェクトのダウンロードリンクもあります。 多分、Qtプログラミングから世界中の人々を助けることができます。

私は私の問題を解決するのを手伝ってくれて、英語があまり良くないかどうかごめんなさい。 メリークリスマスと新年あけましておめでとうございます。 :)

関連する問題