讓我從提供一些背景開始。 Qt庫允許使用兩種可供選擇的方法來創建圖形用戶界面(GUI):
QWidgets使用一組用C語言編寫的小部件++您可以使用明確的C++代碼創建和佈局自己,例如手動編寫或使用Qt Designer以WYSWIG風格編輯應用程序的界面,生成一個.ui.
文件,稍後您將以某種方式使用該文件。 Qt Quick使用聲明性方法創建用戶界面,並使用與HMTL類似的特殊標記語言。我們不在這裏討論它,因爲它不是你使用的方法。
現在讓我們仔細看看Qt Designer如何與.ui
一起使用。文件,因爲我們的應用程序是用C +編寫的。
一旦啓動Qt Designer並編輯表單,然後保存它,就會生成一個.ui.
文件。這是一個XML文件,其中包含您創建的用戶界面的分層描述。但是,爲了能夠將該表單用作應用程序的GUI,需要執行其他步驟。你需要「告訴」應用程序使用這個.ui
。文件。這如下完成。調用一個特殊的可執行文件(UI編譯器uic
)(自動通過qmake
或cmake
)來處理.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上受到極大的阻礙,因爲它帶來了一個重大的安全問題。
有人可以幫我 – shashi
如果你不交叉編譯,你能看到變化嗎? – m7913d
你是否在應用程序的代碼中調用了'setupUI()'?在Qt Designer中編輯表單具有*創建'.ui'文件*的效果。您需要將該文件編譯爲'.h'文件並將其包含到項目中,然後從生成的類繼承,或者在應用程序類中包含generate類的對象。 – iksemyonov