2017-05-25 11 views
0

実際には、Qtの作成者をターミナルex:Linux sudo Qt-creator.shで起動しました。私はアプリケーションを実行するUIのタイプを形成するためにボタン、ウィジェットをドラッグアンドドロップしてUIを設計しようとしたときに、それは空白のウィジェットを表示するだけです。 UIで行われる設計部分は実装されていません。したがって、UIデザイナで行われた変更は、アプリケーションを実行すると表示されません。私はどこに問題がないかはわかりません。それはターミナルからqtを起動するためです。QTデザイナの実装エラー

Arm-Cortexコントローラのバイナリコードをクロスコンパイルする必要があるため、ターミナルからqt creatorをアクティブ化する理由。だから私はqtのアプリケーションでアーム - 皮質のためのコンパイラを設定するための手順に従う必要があります。クロスコンパイルが動作します。しかし、qtデザイナで何か変更が加えられた場合、アプリケーションを実行すると、UI出力ウィンドウの変更を見ることができなくなります。

+0

助けてもらえますか – shashi

+0

コンパイルをクロスしないと変更を確認できますか? – m7913d

+0

アプリケーションのコードで 'setupUI()'を呼び出していますか? Qt Designerでフォームを編集すると、 '.ui'ファイルを作成する*他に何もしないという効果があります。そのファイルを '.h'ファイルにコンパイルしてプロジェクトに組み込み、生成されたクラスから継承したり、生成クラスのオブジェクトをアプリケーションクラスに含めたりする必要があります。 – iksemyonov

答えて

1

背景を提供してみましょう。 Qtライブラリは、次の2つの代替方法を使用して、グラフィカル・ユーザ・インターフェース(GUI)を作成することを可能にする:

  • QWidgetsは

  • Qtのクイック

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ではお勧めできません。

+0

実際にはLinux sudo Qt-creator.shは端末からqt creatorを起動するためのもので、ルートの下にあります。時にはそれは許可が拒否されているように求める。 qtデザイナーが変わった場合、ui出力には影響しません。 – shashi

+0

誰かが私を助けることができます – shashi

+0

@shashi私は上記の答えで解決策を説明しましたか? – iksemyonov

関連する問題