2017-05-25 51 views
0

其實我從終端ex激活了Qt創建器:在Linux sudo Qt-creator.sh中。所以qt應用程序打開。當我試圖通過拖放按鈕來設計用戶界面,小部件形成一種類型的UI。當我運行應用程序時,它只顯示空白小部件。在UI中完成的設計部分未實現。所以無論UI設計者做了什麼改變,當我運行應用程序時都不會顯示。我不知道問題在哪裏。是因爲從終端激活qt?QT設計器執行錯誤

從終端激活qt創建者的原因是因爲我需要爲Arm-Cortex控制器交叉編譯二進制代碼。所以我需要按照步驟設置qt應用程序中的arm-cortex編譯器。但是,跨編譯工作。但如果在qt設計器上做了任何更改,當我運行該應用程序時,我無法看到UI輸出窗口中的更改。

+0

有人可以幫我 – shashi

+0

如果你不交叉編譯,你能看到變化嗎? – m7913d

+0

你是否在應用程序的代碼中調用了'setupUI()'?在Qt Designer中編輯表單具有*創建'.ui'文件*的效果。您需要將該文件編譯爲'.h'文件並將其包含到項目中,然後從生成的類繼承,或者在應用程序類中包含generate類的對象。 – iksemyonov

回答

1

讓我從提供一些背景開始。 Qt庫允許使用兩種可供選擇的方法來創建圖形用戶界面(GUI):

  • QWidgets

  • Qt的快速

QWidgets使用一組用C語言編寫的小部件++您可以使用明確的C++代碼創建和佈局自己,例如手動編寫使用Qt Designer以WYSWIG風格編輯應用程序的界面,生成一個.ui.文件,稍後您將以某種方式使用該文件。 Qt Quick使用聲明性方法創建用戶界面,並使用與HMTL類似的特殊標記語言。我們不在這裏討論它,因爲它不是你使用的方法。

現在讓我們仔細看看Qt Designer如何與.ui一起使用。文件,因爲我們的應用程序是用C +編寫的。

一旦啓動Qt Designer並編輯表單,然後保存它,就會生成一個.ui.文件。這是一個XML文件,其中包含您創建的用戶界面的分層描述。但是,爲了能夠將該表單用作應用程序的GUI,需要執行其他步驟。你需要「告訴」應用程序使用這個.ui。文件。這如下完成。調用一個特殊的可執行文件(UI編譯器uic)(自動通過qmakecmake)來處理.ui文件,並以頭文件的形式生成C++代碼。然後將頭文件包含在包含應用程序代碼的文件中,並使用三種可用方法之一使用生成的代碼創建應用程序的UI。

最簡單的方法如下所示。

class MyForm : public QWidget 
{ 
    Q_OBJECT 

public: 
    MyForm(QWidget *parent = 0); 

private: 
    Ui::MyForm ui; 
}; 

ui構件目的是通過uic生成的類的對象 - 上面提到的UI編譯器。該類包含用於創建用戶界面,將其組織到佈局以及在整個應用程序生命週期中管理它的代碼。

然後,在.cpp文件,我們有構造函數:

MyForm::MyForm(QWidget *parent) 
    : QWidget(parent) 
{ 
    ui.setupUi(this); 
} 

這裏最重要的調用是ui.setupUi(this)。這將創建UI元素,應用佈局,並在作爲此調用參數提供的小部件上設置佈局。請記住,我們的班級繼承QWidget

其他方法包括從生成的類繼承,並使用QUiLoader類動態加載.ui文件,省略編譯uic。請諮詢http://doc.qt.io/qt-5/designer-using-a-ui-file.html作進一步參考。

就從終端啓動Qt Designer而言,它對問題沒有影響。此外,啓動一個GUI應用程序root在Linux上受到極大的阻礙,因爲它帶來了一個重大的安全問題。

+0

實際上,Linux sudo Qt-creator.sh用於從終端激活qt創建器,因此它位於根目錄下。所以有時候會要求拒絕許可。如果我在qt設計器中更改,它不會影響ui輸出。 – shashi

+0

有人可以幫我 – shashi

+0

@shashi我已經在上面的答案中解釋瞭解決方案? – iksemyonov