国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式 QT純代碼設(shè)計UI

這篇具有很好參考價值的文章主要介紹了嵌入式 QT純代碼設(shè)計UI。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ?

目錄

1.1 實例功能

1.2 界面創(chuàng)建

1.3?界面組件的創(chuàng)建與布局

1.4?信號與槽的關(guān)聯(lián)


qt純代碼不拖控件寫界面,全棧,嵌入式,C++,ui,qt,嵌入式硬件

UI 的可視化設(shè)計是對用戶而言的,其實底層都是 C++ 的代碼實現(xiàn),只是 Qt 巧妙地進(jìn)行了處理,讓用戶 省去了很多繁瑣的界面設(shè)計工作。
? 由于界面設(shè)計的底層其實都是由 C++ 語言實現(xiàn)的,底層實現(xiàn)的功能比可視化設(shè)計更加強(qiáng)大和靈活。某些界面 效果是可視化設(shè)計無法完成的,或者某些人習(xí)慣了用純代碼的方式來設(shè)計界面,就可以采用純代碼的方式設(shè)計界 面,如 Qt 自帶的實例基本都是用純代碼方式實現(xiàn)用戶界面的。
所以,本節(jié)介紹一個用純代碼方式設(shè)計 UI 的實例,通過實例了解用純代碼設(shè)計 UI 的基本原理。與前面的 可視化 UI 設(shè)計相對應(yīng),且稱之為代碼化 UI 設(shè)計。

1.1 實例功能

? ?首先建立一個 Widget Appliation 項目 samp2_3,在創(chuàng)建項目向?qū)е羞x擇基類時,選擇基類 QDialog,新類 的名稱命名為 QWDlgManual,關(guān)鍵是取消創(chuàng)建窗體,即不勾選“Generate form”(創(chuàng)建界面)復(fù)選框。創(chuàng)建后的項目文件目錄樹下沒有 qwdlgmanual.ui 文件。

? ?該項目通過代碼創(chuàng)建一個對話框,實現(xiàn)與 samp2_2 類似的界面和功能。本例完成后的運行效果如圖 1 所示, 其界面和功能與 samp2_2 類似。
qt純代碼不拖控件寫界面,全棧,嵌入式,C++,ui,qt,嵌入式硬件

1.2 界面創(chuàng)建

QWDlgManual 類定義
完成功能后的 qwdlgmanual.h 文件中 QWDlgManual 類的完整定義如下:
#include <QDialog>
#include <QCheckBox>
#include <QRadioButton>
#include <QPlainTextEdit>
#include <QPushButton>
class QWDlgManual : public QDialog
{
 Q_OBJECT
private:
 QCheckBox *chkBoxUnder;
 QCheckBox *chkBoxItalic;
 QCheckBox *chkBoxBold;
 QRadioButton *rBtnBlack;
 QRadioButton *rBtnRed;
 QRadioButton *rBtnBlue;
 QPlainTextEdit *txtEdit;
 QPushButton *btnOK;
 QPushButton *btnCancel;
 QPushButton *btnClose;
 void iniUI();//UI 創(chuàng)建與初始化
 void iniSignalSlots();//初始化信號與槽的鏈接
private slots:
 void on_chkBoxUnder(bool checked); //Underline 的 clicked(bool)信號的槽函數(shù)
 void on_chkBoxItalic(bool checked);//Italic 的 clicked(bool)信號的槽函數(shù)
void on_chkBoxBold(bool checked); //Bold 的 clicked(bool)信號的槽函數(shù)
 void setTextFontColor(); //設(shè)置字體顏色
public:
 QWDlgManual(QWidget *parent = 0);
 ~QWDlgManual();
};
QWDlgManual 類的 private 部分,聲明了界面上的各個組件的指針變量,這些界面組件都需要在 QWDlgManual 類的構(gòu)造函數(shù)里創(chuàng)建并在窗體上布局。
private 部分自定義了兩個函數(shù), iniUI() 用來創(chuàng)建所有界面組件,并完成布局和屬性設(shè)置, iniSignalSlots() 用來完成所有的信號與槽函數(shù)的關(guān)聯(lián)。
private slots 部分聲明了 4 個槽函數(shù),分別是 3 CheckBox 的響應(yīng)槽函數(shù),以及 3 個顏色設(shè)置的 RadioButton 的共同響應(yīng)槽函數(shù)。
注意:與可視化設(shè)計得到的窗體類定義不同, QWDlgManual 的類定義里沒有指向界面的指針 ui 。
這幾個槽函數(shù)的功能與例 samp2_2 中的類似,只是在訪問界面組件時,無需使用 ui 指針,而是直接訪問 QWDlgManual 類里定義的界面組件的成員變量即可,例如 on_chkBoxUnder() 的代碼:
void QWDlgManual::on_chkBoxUnder(bool checked)
{
 QFont font=txtEdit->font();
 font.setUnderline(checked);
txtEdit->setFont(font);
}
界面的創(chuàng)建,以及信號與槽函數(shù)的關(guān)聯(lián)都在 QWDlgManual 的構(gòu)造函數(shù)里完成,構(gòu)造函數(shù)代碼如下:
QWDlgManual::QWDlgManual(QWidget *parent) : QDialog(parent)
{
 iniUI(); //界面創(chuàng)建與布局
 iniSignalSlots(); //信號與槽的關(guān)聯(lián)
setWindowTitle("Form created mannually");
}
構(gòu)造函數(shù)調(diào)用 iniUI() 創(chuàng)建界面組件并布局,調(diào)用 iniSignalSlots() 進(jìn)行信號與槽函數(shù)的關(guān)聯(lián)。

1.3?界面組件的創(chuàng)建與布局

iniUI() 函數(shù)實現(xiàn)界面組件的創(chuàng)建與布局,以及屬性設(shè)置。下面是 iniUI() 的完整代碼: 文章來源地址http://www.zghlxwxcb.cn/news/detail-837488.html

void QWDlgManual::iniUI()
{
 //創(chuàng)建 Underline, Italic, Bold 3 個 CheckBox,并水平布局
 chkBoxUnder=new QCheckBox(tr("Underline"));
 chkBoxItalic=new QCheckBox(tr("Italic"));
 chkBoxBold=new QCheckBox(tr("Bold"));
 QHBoxLayout *HLay1=new QHBoxLayout;
 HLay1->addWidget(chkBoxUnder);
 HLay1->addWidget(chkBoxItalic);
 HLay1->addWidget(chkBoxBold);
 //創(chuàng)建 Black, Red, Blue 3 個 RadioButton,并水平布局
 rBtnBlack=new QRadioButton(tr("Black"));
 rBtnBlack->setChecked(true);
 rBtnRed=new QRadioButton(tr("Red"));
rBtnBlue=new QRadioButton(tr("Blue"));
 QHBoxLayout *HLay2=new QHBoxLayout;
 HLay2->addWidget(rBtnBlack);
 HLay2->addWidget(rBtnRed);
 HLay2->addWidget(rBtnBlue);
 //創(chuàng)建確定, 取消, 退出 3 個 PushButton, 并水平布局
 btnOK=new QPushButton(tr("確定"));
 btnCancel=new QPushButton(tr("取消"));
 btnClose=new QPushButton(tr("退出"));
 QHBoxLayout *HLay3=new QHBoxLayout;
 HLay3->addStretch();
 HLay3->addWidget(btnOK);
 HLay3->addWidget(btnCancel);
 HLay3->addStretch();
 HLay3->addWidget(btnClose);
 //創(chuàng)建文本框,并設(shè)置初始字體
 txtEdit=new QPlainTextEdit;
 txtEdit->setPlainText("Hello world\n\nIt is my demo");
 QFont font=txtEdit->font(); //獲取字體
 font.setPointSize(20);//修改字體大小
 txtEdit->setFont(font);//設(shè)置字體
 //創(chuàng)建垂直布局,并設(shè)置為主布局
 QVBoxLayout *VLay=new QVBoxLayout;
 VLay->addLayout(HLay1); //添加字體類型組
 VLay->addLayout(HLay2);//添加字體顏色組
 VLay->addWidget(txtEdit);//添加 PlainTextEdit
 VLay->addLayout(HLay3);//添加按鍵組
setLayout(VLay); //設(shè)置為窗體的主布局
}
iniUI() 函數(shù)按照順序完成了如下的功能:
? 創(chuàng)建 3 QCheckBox 組件,這 3 個組件的指針已經(jīng)定義為 QWDlgManual 的私有變量,然后創(chuàng)建一 個水平布局 HLay1 ,將 3 CheckBox 添加到這個水平布局里。
? 創(chuàng)建 3 QRadioButton 組件,并創(chuàng)建一個水平布局 HLay2 ,將 3 RadioButton 添加到這個水平布 局里。
? 創(chuàng)建 3 QPushButton 組件,并創(chuàng)建一個水平布局 HLay3 ,將 3 PushButton 添加到這個水平布局里,并適當(dāng)添加水平空格。
? 創(chuàng)建一個 QPlainTextEdit 組件,設(shè)置其文字內(nèi)容,并設(shè)置其字體。
? 創(chuàng)建一個垂直布局 VLay ,將前面創(chuàng)建的 3 個水平布局和文本框依次添加到此布局里。
? 設(shè)置垂直布局為窗體的主布局。
如此創(chuàng)建組件并設(shè)置布局后,運行可以得到如圖 1 所示的界面效果。這里完全是采用代碼來實現(xiàn)組件創(chuàng)建與布局的設(shè)置,而這些功能在可視化設(shè)計中是由 setupUi() 函數(shù)根據(jù)界面的可視化設(shè)計結(jié)果自動實現(xiàn)的。
采用代碼設(shè)計實現(xiàn) UI 時,需要對組件的布局有個完整的規(guī)劃,不如可視化設(shè)計直觀,且編寫代碼工作量大。

1.4?信號與槽的關(guān)聯(lián)

在純代碼設(shè)計 UI 時,信號與槽的關(guān)聯(lián)也需要用代碼來完成。函數(shù) iniSignalSlots() 初始化所有的信號與槽的關(guān)聯(lián),其完整代碼如下:
void QWDlgManual::iniSignalSlots()
{
 //三個顏色 QRadioButton 的 clicked()信號與 setTextFontColor()槽函數(shù)關(guān)聯(lián)
 connect(rBtnBlue,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
 connect(rBtnRed,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
 connect(rBtnBlack,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
 //三個字體設(shè)置的 QCheckBox 的 clicked(bool)信號與相應(yīng)的槽函數(shù)關(guān)聯(lián)
 connect(chkBoxUnder,SIGNAL(clicked(bool)),
 this,SLOT(on_chkBoxUnder(bool)));
 connect(chkBoxItalic,SIGNAL(clicked(bool)),
 this,SLOT(on_chkBoxItalic(bool)));
 connect(chkBoxBold,SIGNAL(clicked(bool)),
 this,SLOT(on_chkBoxBold(bool)));
 //三個按鈕的信號與窗體的槽函數(shù)關(guān)聯(lián)
 connect(btnOK,SIGNAL(clicked()),this,SLOT(accept()));
 connect(btnCancel,SIGNAL(clicked()),this,SLOT(reject()));
connect(btnClose,SIGNAL(clicked()),this,SLOT(close()));
}
設(shè)計完成后,編譯并運行程序,可以得到如圖 1 所示的運行效果,且功能與 samp2_2 相同。很顯然,采用純代碼方式實現(xiàn) UI 界面是比較復(fù)雜的,代碼設(shè)計的工作量大而繁瑣。

到了這里,關(guān)于嵌入式 QT純代碼設(shè)計UI的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 嵌入式QT- QT使用MQTT

    嵌入式QT- QT使用MQTT

    目錄 一、MQTT介紹 二、MQTT概念 ? 2.1 訂閱(Subscribtion) ? 2.2?會話(Session) ? 2.3 主題名(Topic Name) ? ?2.4 主題篩選器(Topic Filter) ? ?2.5 消息訂閱 三、MQTT中的角色 3.1 客戶端 3.2 服務(wù)器 四、X86平臺安裝mosquitto 4.1 下載?mosquitto 服務(wù)器 4.2?下載 mosquitto 客戶端 4.3?mosquitto 命令

    2024年02月13日
    瀏覽(22)
  • 嵌入式Qt 第一個Qt項目

    嵌入式Qt 第一個Qt項目

    打開Qt Creator 界面選擇 New Project或者選擇菜單欄 【文件】-【新建文件或項目】菜單項 ??彈出New Project對話框,選擇Qt Widgets Application 選擇【Choose】按鈕,彈出如下對話框 設(shè)置項目名稱和路徑,按照向?qū)нM(jìn)行下一步? ?選擇編譯套件 向?qū)J(rèn)添加一個繼承自QMainWindow的類,可

    2024年02月20日
    瀏覽(17)
  • 【嵌入式——QT】容器類

    Qt提供了基于模板的容器類,這些容器類可以用于存儲指定類型的數(shù)據(jù)項,Qt的容器類比標(biāo)準(zhǔn)模板庫(STL)中的容器類更輕巧、安全和易于使用。它們還是線程安全的,它們作為只讀容器時可被多個線程訪問。 容器類是基于模板的類,如常用的容器類QList,T是一個具體的類型,可

    2024年02月22日
    瀏覽(24)
  • 嵌入式 QT 界面布局管理

    嵌入式 QT 界面布局管理

    目錄 1、實例程序功能 2、界面組件布局 2.1 界面組件的層次關(guān)系 2.2 布局管理 2.3 伙伴關(guān)系和Tab順序 ? ? ? 創(chuàng)建一個 Widget Application 項目 samp2_2, 在創(chuàng)建窗體時選擇基類 QDialog ,生成的類命名為 QWDialog ,并選擇生成窗體。 ? ? 如 此 新建 的項 目 samp2_2 有一 個界 面文 件 qwdi

    2024年02月04日
    瀏覽(29)
  • 嵌入式Qt Qt中的信號處理

    嵌入式Qt Qt中的信號處理

    Qt消息模型: - Qt封裝了具體操作系統(tǒng)的消息機(jī)制 - Qt遵循經(jīng)典的GUI消息驅(qū)動事件模型 Qt中定義了與系統(tǒng)消息相關(guān)的概念; ? Qt中的消息處理機(jī)制: Qt的核心 QObject::cinnect函數(shù): Qt中的“新”: 實驗1 初探信號與槽? ?運行結(jié)果: - 只有QObject的子類才能自定義槽 - 定義槽的

    2024年02月22日
    瀏覽(27)
  • 嵌入式:QT Day1

    嵌入式:QT Day1

    源碼: widge.h ?widge.cpp ?main.cpp

    2024年02月15日
    瀏覽(24)
  • 嵌入式:QT Day4

    嵌入式:QT Day4

    源碼: widget.h widget.cpp main.cpp

    2024年02月14日
    瀏覽(25)
  • 嵌入式:QT Day2

    嵌入式:QT Day2

    源碼: widget.h second.h widget.cpp second.cpp main.cpp ? ?

    2024年02月15日
    瀏覽(25)
  • 【嵌入式——QT】QStyledItemDelegate用法詳解

    【嵌入式——QT】QStyledItemDelegate用法詳解

    QStyledItemDelegate是所有Qt item視圖的默認(rèn)委托,在創(chuàng)建它們時就會被安裝在它們上面。 QStyledItemDelegate類是模型/視圖類之一,是Qt模型/視圖框架的一部分。委托允許項目的顯示和編輯獨立于模型和視圖進(jìn)行開發(fā)。 模型中數(shù)據(jù)項的數(shù)據(jù)被賦值為ItemDataRole;每個物品可以為每個角色存

    2024年01月23日
    瀏覽(28)
  • 嵌入式開發(fā)板qt gdb調(diào)試

    嵌入式開發(fā)板qt gdb調(diào)試

    1) 啟動 gdbserver ssh 或者 telnet 登陸揚創(chuàng)平板 192.168.0.253, 進(jìn)入命令行執(zhí)行如下: chmod 777 /home/HelloWorld (2) 打 開 QTcreator-Debug-StartDebugging-Attach to Running Debug Server 進(jìn)行如下設(shè)置,設(shè)置監(jiān)聽端口10000. 點擊上圖中的按鈕,由于按鈕中的函數(shù)設(shè)置了斷點,則跳到斷點,界面如下

    2024年02月04日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包