背景を提供してみましょう。 Qtライブラリは、次の2つの代替方法を使用して、グラフィカル・ユーザ・インターフェース(GUI)を作成することを可能にする:
QWidgetsはCで書かれたウィジェットのセットを使用++明示的なC++コードを使用して自分自身を作成しレイアウトすることができます。つまり、手作業でまたはを使用すると、WYSIWIGスタイルでアプリケーションのインターフェイスを編集し、後で特定の方法で使用するファイルです。 Qt Quickは、HMTLに似た特別なマークアップ言語を使用して、ユーザーインターフェイスの作成に宣言的なアプローチを使用します。あなたが使っているアプローチではないのでここでは議論しません。
ここで、Qt Designerと.ui
との連携について詳しく見ていきましょう。ファイルは、私たちのアプリケーションがC +で書かれていることを前提としています。
Qt Designerを起動してフォームを編集して保存したら、.ui.
ファイルが生成されます。これは、作成したUIの階層的な説明を含むXMLファイルです。ただし、そのフォームをアプリケーションのGUIとして使用できるようにするには、追加の手順が必要です。このアプリケーションを使用するようにアプリケーションに指示する必要があります。.ui
ファイル。これは次のように行われます。特別な実行可能ファイルであるuic
が実行され、.ui
ファイルを処理し、ヘッダーファイルの形式でC++コードを生成します(またはcmake
経由で自動的に呼び出されます)。その後、アプリケーションコードを含むファイルにヘッダーファイルをインクルードし、生成されたコードを使用してアプリケーションのUIを作成する3つの方法のうちの1つを使用します。
最も簡単な方法を以下に示します。上記UIコンパイラ -
class MyForm : public QWidget
{
Q_OBJECT
public:
MyForm(QWidget *parent = 0);
private:
Ui::MyForm ui;
};
ui
メンバオブジェクトは、uic
によって生成されたクラスのオブジェクトです。このクラスには、ユーザーインターフェイスを作成し、それをレイアウトに編成し、アプリケーションライフタイム全体にわたって管理するためのコードが含まれています。
はその後、.cpp
ファイルでは、我々はコンストラクタを持つ:ここ
MyForm::MyForm(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
重要な呼び出しがui.setupUi(this)
です。これは、UI要素を作成し、レイアウトを適用し、この呼び出しの引数として提供されたウィジェットにレイアウトを設定します。授業はQWidget
から継承されます。
他のアプローチには、クラスを使用して、uic
によるコンパイルを省略して、生成されたクラスから継承し、.ui
ファイルを動的にロードすることが含まれます。詳細については、http://doc.qt.io/qt-5/designer-using-a-ui-file.htmlにお問い合わせください。
端末からQt Designerを起動する限り、問題に影響はありません。さらに、GUIアプリケーションをroot
として起動することは、大きなセキュリティ上の問題を引き起こすため、Linuxではお勧めできません。
助けてもらえますか – shashi
コンパイルをクロスしないと変更を確認できますか? – m7913d
アプリケーションのコードで 'setupUI()'を呼び出していますか? Qt Designerでフォームを編集すると、 '.ui'ファイルを作成する*他に何もしないという効果があります。そのファイルを '.h'ファイルにコンパイルしてプロジェクトに組み込み、生成されたクラスから継承したり、生成クラスのオブジェクトをアプリケーションクラスに含めたりする必要があります。 – iksemyonov