導航:首頁 > 版本升級 > qt5使用ui文件

qt5使用ui文件

發布時間:2023-03-18 13:11:40

『壹』 qt 怎麼根據ui文件動態創建QWIdget窗口部件

動態對話框是在程序運行時用 Qt Designer 的.ui 文件創建。不用 uic工具把.ui 文件變成
等價的 c++代碼,而是在程序時使用類 QUiLoader 載入.ui文件,例如下面的代碼:
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
...
}
子控制項可以用 QObject::findChild<T>()得到
QComboBox *primaryColumnCombo =
sortDialog->findChild<QComboBox *>("primaryColumnCombo");
if (primaryColumnCombo) { ...
}
findChild<T>()是模板成員函數,得到類型為 T 的給定名字的子控制項的指針。由於編
譯器的原因,用 MSVC6 是得不到的。如果使用的是 MSVC6,那麼可以使用全局函數
qFindChild<T>()。
QUiLoader 類在一個單獨的鏈接庫中,如果在一個應用程序中使用了 QUiLoader,
必須在這個程序的.pro文件中添加下面這樣的代碼:
CONFIG += uitools
使用動態對話框不用重新編譯程序就能夠改變對話框的布局。

『貳』 如何使用ui文件

UI色彩體系:

高亮色,文字色,分割線色,背景色,輔助色,normal ,pressed,disabled的狀態都是附加了比如10%的#000,10%#ffff之類的。
文字體系:

文字大小,line-height,所以字體大小與line-height的比例關系建議保持一致,如果存在小數點,可以四捨五入。比如:28px字體大小的line-height是40px。那26px的字體,line-height可以取36px,比例是1.4。

UI設計不只是單純的用戶界面的美觀設計,而是一個結合用戶體驗,產品思維,美觀設計等多學科之間的綜合設計。對於設計師的綜合能力要求很高。
想要解決界面的交互合理性和易用性,首先需要設計師具有一定的產品邏輯思維和一定的優化使用便利性的能力,並且可以根據用戶的不同反饋,在界面設計上做出相應的調整。

『叄』 Qt中如何添加UI

你用的是QT4嗎?是的話,在QT中新建文件時,選擇"qt designer class",即可同時生成類和ui

『肆』 Qt中怎麼用Ui文件

第一步,製作ui文件。x0dx0a首先應該用Qt Designer繪制一個自己的界面,並存為myform.ui(這里的myform可以用自己喜歡的名字代替)。x0dx0a在製作自己的界面文件時要注穗畝意以下幾個要點:x0dx0a1、要記住ui文件的名字,因為uic生成的代碼會存在ui_myform.h里x0dx0a2、要記住主窗體的object name, 因為ui文件提供的類名將以這個form的名字來命名x0dx0a3、要特別注意你的form選擇的基類要和你代碼中的窗體類兼容x0dx0a4、要記得給每個後面需要訪問到的控制項起一個有意義並且好記的object name, 因為ui文件提供的控制項將以這些object name來命名x0dx0a清楚了以上幾點,在代碼中使用你的ui文件就會變得非常簡單。x0dx0a第二步,將ui文件加入工程x0dx0a這一步最簡單,只需要修改pro文件,加入FORMS+=myform.uix0dx0aqmake -project命令也可以識別後綴名為ui的文件,並將之加入工程。x0dx0a第三步,在代碼中引用ui文件x0dx0a官方介紹的使用ui文件的方法有三種,一個是直接引用,二是單繼承,三是多繼承。第一種方法其實很不實用,大家去看一下文檔中的例子就可以了;第二種和第三種沒有本質的差別,可以並作一類,這里做重點介紹。x0dx0aui文件最終會被翻譯成標準的C++代碼,並存入一個.h文件中,這個過程在調用make之後才進行,所以初始情況下你是看不到這個ui_myform.h文件的,只有經過了make過程該頭文件才生成。不過沒關系,沒有這個文件我們照樣能寫出正確的代碼。x0dx0a單繼承方式簡單來說就是在代碼中首先要自定義一個子類(後文稱為MyForm),該類要從form對應的窗體類(或其兼容的子類)派生;並用ui生成的類定義一個類里的成員變數(後文成文myui)。這樣在MyForm的構造函數中可以直接調用myui和myui中的變數和函數,使用起來很方便。猜昌森舉例說明, 比如這里有一個ui文件叫myform.ui, ui文件里定義的窗體名字為BigWidget,上面擺放了一個單行編輯控制項叫lineeditName:x0dx0a//myform.hx0dx0a#include 「ui_myform.h」x0dx0ax0dx0aclass MyForm: publicx0dx0ax0dx0aQWidget {x0dx0ax0dx0aQ_OBJECTx0dx0apublic:x0dx0aMyForm(QWidget*parent)x0dx0ax0dx0a{x0dx0ax0dx0amyui.setupUi(this);x0dx0a}x0dx0aprivate:x0dx0ax0dx0aUi::BigWidget myui;x0dx0ax0dx0aprivate: x0dx0avoid my_function();x0dx0ax0dx0a};x0dx0a上面這段簡單的類的聲明是前文所述前三點要點的最佳例證,請對照要點的文字描述和具體的代碼體會其中的含義。這里還有一點比較有意思的地方,就是ui文件提供的類被包含在了名為Ui的name space里,這樣做的目的是將ui文件的命名空間與用戶的代碼分離,避免兩者出現命名沖突的情況。相應的,迅缺寫代碼的時候也要注意在使用ui文件中的類時要用「Ui::」的方式進行引用。x0dx0a再來看cpp文件x0dx0a//myform.cppx0dx0a#includex0dx0a#include 「myform.h」x0dx0ax0dx0avoid my_function(void)x0dx0ax0dx0a{ QMessageBox::information(this, 「Name」, myui.lineeditName->text());x0dx0a}x0dx0a這里隨便寫了一個函數,為了說明如何在窗體類里調用ui文件中定義的控制項。這段代碼非常簡單,就不多作說明了。x0dx0a有了單繼承的基礎,學習多繼承是小菜一碟。來段代碼看一下就明白了。x0dx0a//myform.h #include 「ui_myform.h」x0dx0aclass MyForm: public QWidget, public Ui::BigWidgetx0dx0a{x0dx0aQ_OBJECTx0dx0apublic:x0dx0aMyForm(QWidget*parent)x0dx0a{x0dx0asetupUi(this);x0dx0a}x0dx0aprivate:x0dx0avoid my_function();x0dx0a};x0dx0a//myform.cppx0dx0a#includex0dx0a#include 「myform.h」x0dx0ax0dx0avoid my_function(void)x0dx0a{x0dx0ax0dx0aQMessageBox::information(this, 「Name」, lineeditName->text());x0dx0a}x0dx0a是不是不用說明大家也能明白呢?多繼承其實就是不僅從form需要的窗體類去派生,還要加上ui提供的類本身。這樣帶來的好處是你的窗體類繼承了ui里的所有控制項和方法,調用時就可以少寫一些字。x0dx0a單繼承和多繼承這兩種方法沒有好壞之分,大家可以根據自己的編程習慣取捨。x0dx0a第四步,編譯、驗證在pro文件包含正確FORMS信息的情況下,運行qmake; make就可以編譯工程了。 make時如果你認真看一下輸出就會發現,make在最開始編譯的時候就會自動調用uic去生成需要的代碼。經過make之後ui_myform.h文件就生成了,建議大家去看一下這個文件的內容。

『伍』 Qt creator中使用.ui文件的問題

第一,你這多繼承看著很違和,為啥還要聲明一個私有的ui啊?
第一個錯誤是:在函數聲明和實現的簽名中兩次使用默認值,這個算是編譯器的警告,而算不上是錯誤除非是嚴格警告(把所有的警告當做錯誤對待)。
第二個就是setupUI的問題了,這個你設計其中選擇的是dialog,但是你多繼承的時候用的是qwidget……把父類轉換成為子類是無法通過隱式轉換完成的,需要使用dynamic_cast或者強制類型轉換變成一個子類對象,不過我認為dynamic_cast會返回空,因為這種轉換時不安全的。
綜上,兩個錯誤和Qt沒一毛錢的關系,都是C++最基本的問題。

『陸』 如何使用ui文件

這是我按ctrl+alt+r運行出來的,如何使這個利用ui designer設計出來的ui文件能運行起來就是我們這篇文章要議論的內容。
先來看看qtcreator提供的默認框架是如何實現的。要研究qtcreator怎麼實現,就得先看dialog.h這個文件。

#ifndefDIALOG_H
#defineDIALOG_H
#include<QDialog>
namespaceUi{
classDialog;
}
classDialog:publicQDialog{
Q_OBJECT
public:
Dialog(QWidget*parent=0);
~Dialog();
protected:
voidchangeEvent(QEvent*e);
private:
Ui::Dialog*ui;
privateslots:
voidon_pushButton_clicked();
};


#endif // DIALOG_H
觀察不難得出,在上文中我用紅色包含的就是實現這個程序的關鍵。它聲明一個類,將設計出來的ui界面作為該類的一個子對象,在其構造函數中,先完成對子對象的構造,再使用子對象ui調用其setupUi(this)函數實現ui的現實。

閱讀全文

與qt5使用ui文件相關的資料

熱點內容
百米網是什麼網站 瀏覽:725
編程自學哪個語言 瀏覽:836
qt刪除文件內容 瀏覽:409
新編電腦基礎操作綜合應用教程 瀏覽:66
斗戰神元神升級順序 瀏覽:404
如何對華為文件夾命名 瀏覽:850
java比安卓工資低嗎 瀏覽:342
分析報告的兩個數據概要是什麼 瀏覽:71
榮耀6plus強制開機密碼 瀏覽:52
pgf文件復制到word文檔中 瀏覽:876
徐州數據中心有多少家 瀏覽:415
全能快刷下載到哪個文件 瀏覽:760
清理沒用的文件夾 瀏覽:490
蘋果手機錄音文件在哪怎麼傳電腦 瀏覽:720
微信文件助手傳視頻左面出現感嘆號 瀏覽:950
pr查詢站長工具 瀏覽:72
javasax生成xml 瀏覽:305
win10安裝爐石 瀏覽:95
使命召喚iphone 瀏覽:878
追光系統編程軟體是什麼 瀏覽:450

友情鏈接