翻譯|使用教程|編輯:鮑佳佳|2021-05-11 10:34:37.030|閱讀 307 次
概述:我們使用在“計算器表單”示例中創(chuàng)建的表單來顯示,可以在執(zhí)行應(yīng)用程序時生成相同的用戶界面,或者在構(gòu)建應(yīng)用程序時定義相同的用戶界面。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt技術(shù)交流群現(xiàn)已開通,QQ搜索群號“765444821”或即可加入
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺式機操作系統(tǒng)以及移動操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M的試用版。
在運行時從Qt Designer表單創(chuàng)建用戶界面。
我們使用在“計算器表單”示例中創(chuàng)建的表單來顯示,可以在執(zhí)行應(yīng)用程序時生成相同的用戶界面,或者在構(gòu)建應(yīng)用程序時定義相同的用戶界面。
該計算器形式示例定義,我們可以不加修改地使用的用戶界面。在此示例中,我們使用資源文件來包含calculatorform.ui在上一個示例中創(chuàng)建的文件,但是可以將其存儲在磁盤上。
為了在運行時生成表單,我們需要將示例鏈接到QtUiTools模塊庫。我們使用的項目文件包含執(zhí)行此操作所需的所有必要信息:
HEADERS = calculatorform.h RESOURCES = calculatorbuilder.qrc SOURCES = calculatorform.cpp \ main.cpp QT += widgets uitools
所有其他必要的文件都照常聲明。
在CalculatorForm類定義用于承載形式的用戶界面窗口小部件:
class CalculatorForm : public QWidget { Q_OBJECT public: explicit CalculatorForm(QWidget *parent = nullptr); private slots: void on_inputSpinBox1_valueChanged(int value); void on_inputSpinBox2_valueChanged(int value); private: QSpinBox *ui_inputSpinBox1; QSpinBox *ui_inputSpinBox2; QLabel *ui_outputWidget; };
注意,我們不需要包括頭文件來描述用戶界面。我們僅使用要求的自動連接命名約定來定義兩個公共插槽,uic并聲明專用變量,這些專用變量將在構(gòu)造表單后用于訪問表單提供的窗口小部件。
我們將需要使用該庫提供的QUiLoader類libQtUiTools,因此我們首先確保我們包含該模塊的頭文件:
#include <QtUiTools>
構(gòu)造函數(shù)使用表單加載器對象來構(gòu)造我們通過QFile對象從示例資源中檢索的用戶界面:
CalculatorForm::CalculatorForm((QWidget *parent)) : : QWidget(parent)parent) {{ QUiLoader loader;; QFile file((":/forms/calculatorform.ui"); file.open((QFile::ReadOnly); ); QWidget *formWidget = loader.load((&file, this); file.close();();
通過將用戶界面包含在示例的資源中,我們確保在示例運行時將顯示該用戶界面。該loader.load()函數(shù)獲取文件中包含的用戶界面描述,并將表單窗口小部件構(gòu)造為的子窗口小部件CalculatorForm。
我們對生成的用戶界面中的三個小部件感興趣:兩個旋轉(zhuǎn)框和一個標簽。為了方便起見,我們從構(gòu)造的窗口小部件中檢索指向這些窗口小部件的指針FormBuilder,并將它們記錄下來以備后用。該qFindChild()模板的功能使我們能夠查詢控件,以便找到一個名為子部件。
ui_inputSpinBox1 = findChild<QSpinBox*>("inputSpinBox1"); ui_inputSpinBox2 = findChild<QSpinBox*>("inputSpinBox2"); ui_outputWidget = findChild<QLabel*>("outputWidget");
由表單加載器創(chuàng)建的窗口小部件需要連接到CalculatorForm對象中的特殊命名的插槽。我們使用Qt的元對象系統(tǒng)來啟用以下連接:
QMetaObject::connectSlotsByName((this);
表單窗口小部件已添加到布局中,并且設(shè)置了窗口標題:
QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(formWidget);(formWidget); setLayout(layout);(layout); setWindowTitle(tr((tr("Calculator Builder")); }}
修改表單提供的窗口小部件的兩個插槽的定義方式與“計算器表單”示例中的相似,不同之處在于我們從旋轉(zhuǎn)框中讀取值并將結(jié)果通過構(gòu)造函數(shù)中記錄的指針寫入輸出窗口小部件中。 :
void CalculatorFormCalculatorForm::on_inputSpinBox1_valueChanged((int value)) {{ ui_outputWidget->setText((QString::number(value (value + ui_inputSpinBox2->value()));())); }} void CalculatorFormCalculatorForm::on_inputSpinBox2_valueChanged((int value)) {{ ui_outputWidget->setText((QString::number(value (value + ui_inputSpinBox1->value()));())); }}
這種方法的優(yōu)點是,我們可以在運行應(yīng)用程序時替換表單,但是只要給它們指定適當(dāng)?shù)拿Q,我們?nèi)匀豢梢圆倏v其中包含的窗口小部件。
Qt組件推薦:
====================================================
想要了解或購買Qt正版授權(quán)的朋友,歡迎
Qt技術(shù)交流群現(xiàn)已開通,QQ搜索群號“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: