3

私はQtを初めて使用しますが、いくつかの単純なウィンドウとフレームを機能させることができました。64 ビットの Kubuntu システムで Eclipse を実行しています。Eclipse でコードを編集した後、コマンド ラインから qmake と make を実行しています。

昨日、Eclipseでウィジェットとボタンを「ハードコード」するのに比べて、Qt Designerを試してみました。ただし、Eclipse に慣れているため、QT Creator には切り替えません。

私の目標は、Qt Designer で GUI を作成し、生成されたコードを Eclipse で使用することです。

qmake -project、qmake、および make を実行すると、クラス コードを含むメインウィンドウのヘッダー ファイルが生成されます。

しかし、このヘッダー ファイルを Eclipse コードにインクルードしようとすると、g++ がヘッダー ファイルを見つけられないため、make がエラーで停止します (ヘッダーがまだ作成されていないようです)。

認めざるを得ませんが、Qt の構築プロセスについてはまだ混乱しています。では、どうすれば Qt Designer を介して GUI を設計し、コーディング IDE として Eclipse を使用できるでしょうか?

こんにちは、荷物

編集: 私の Eclipse プロジェクトは「空の Makefile プロジェクト」です。私の知る限り、これはビルドプロセス全体を処理する必要があることを意味します。Eclipseは私のために何もしません。

Makefileはqmakeによって生成される必要があるため、Eclipseから「make」を実行しようとはしていません。したがって、Eclipseでコードを作成して保存した後、コマンドラインからqmakeとmakeを実行します。

Qmake は .ui ファイルがあることを感知し、このクラスのヘッダー ファイルを生成します。問題は、このヘッダーを Eclipse にインクルードしようとすると、ソース コード ファイルをコンパイルできないことです。

私にとっては、「make」が私のソース コード ファイルで g++ を呼び出すときに、GUI のヘッダーが作成されていないようです。

では、なぜ私はこのようにしているのでしょうか。Qt Creator などの IDE に依存したくありません。つまり、私のプロジェクトをコンパイルしようとするすべての人は、その特定の IDE の構成ファイルやプロジェクト固有の設定などのメタ情報を必要とします。

私の C プロジェクトでは、手書きの Makefile を使用しているので、GCC をインストールして (通常はインストールしています)、「make」と入力するだけです。

私はQtプロジェクトでこれにできるだけ近づけようとしています。

4

1 に答える 1

1

必要なものは次の 4 つです。

  • Qt Designer によって生成された .ui

=> about.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>About</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>A Propos</string>
</property>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
  • .ui に関連付けられた cpp / h。たとえば、次のようになります。

About Window (about.cpp) =>

#include "about.h"
#include "ui_about.h"

About::About(QWidget *parent) : QDialog(parent), ui(new Ui::About)
{
    ui->setupUi(this);
}

About::~About()
{
    delete ui;
}

(約.h) =>

#ifndef ABOUT_H
#define ABOUT_H

#include <QDialog>

namespace Ui {
    class About;
}

class About : public QDialog
{
    Q_OBJECT
public:
    explicit About(QWidget *parent = 0);
    ~About();

private:
    Ui::About *ui;
};

#endif // ABOUT_H

.pro ファイル内

SOURCES += about.cpp
HEADERS += about.h
FORMS   += about.ui
于 2012-12-13T10:16:23.233 に答える