chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)Qt,此問(wèn)題必解!

嵌入式小生 ? 來(lái)源:嵌入式小生 ? 2023-01-04 14:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近有小伙伴問(wèn)到:在Qt開(kāi)發(fā)中,當(dāng)使用QtCreator自帶的工程向?qū)?chuàng)建了一個(gè)類(lèi)后,如下代碼所示:

ca0a5f9a-8bf2-11ed-bfe3-dac502259ad0.png

問(wèn)題來(lái)了:上圖紅色矩形框圈出的兩個(gè)地方描述的是同一個(gè)類(lèi)嗎?

首先這個(gè)問(wèn)題剛接觸Qt的時(shí)候可能會(huì)有此一問(wèn),在此處記錄一下。這里需要知道上述代碼是QtCreator自動(dòng)生成的(如果使用向?qū)?chuàng)建一個(gè)類(lèi))。

用同樣的方法新創(chuàng)建一個(gè)類(lèi),(用鼠標(biāo)點(diǎn)擊工程項(xiàng)目后,右鍵單擊,選擇“添加新文件”,在彈出的對(duì)話(huà)框中,選擇Qt->Qt設(shè)計(jì)師界面類(lèi)->Widget)將會(huì)彈出“選擇類(lèi)名”對(duì)話(huà)框:

ca3274a8-8bf2-11ed-bfe3-dac502259ad0.png

在上圖中,默認(rèn)情況下其頭文件、源文件和Form文件都是同一個(gè)命名,點(diǎn)擊下一步后則創(chuàng)建一個(gè)名為Form的類(lèi),該類(lèi)位于form.h/.cpp中。在from.h頭文件中,該類(lèi)定義如下:

ca4d807c-8bf2-11ed-bfe3-dac502259ad0.png

可以看到,Form類(lèi)和MainWindow類(lèi)在生成方式上是一樣的。

好啦,如果我們?cè)谛聞?chuàng)建類(lèi)的時(shí)候?yàn)槠渲匦旅?img src="https://file1.elecfans.com//web2/M00/9E/A2/wKgZomToHN2AQznDAAEQ7fGTfcg547.png" alt="ca6b643e-8bf2-11ed-bfe3-dac502259ad0.png" />其自動(dòng)生成的代碼還是那種方式的寫(xiě)法:ca74bf84-8bf2-11ed-bfe3-dac502259ad0.png

至此,得出一個(gè)結(jié)論:

這是QtCreator的固定寫(xiě)法,當(dāng)我們新創(chuàng)建類(lèi)的時(shí)候,QtCreator這個(gè)IDE會(huì)自動(dòng)生成。

言歸正傳,回到本文的問(wèn)題,下圖中紅色圈出的地方,雖然在名稱(chēng)上是一樣的,但是他倆不是同一個(gè)東西。由于使用了QtCreator的類(lèi)創(chuàng)建向?qū)?chuàng)建類(lèi),所以他們?cè)诿Q(chēng)上是一樣的ca7cce9a-8bf2-11ed-bfe3-dac502259ad0.png

上述問(wèn)題還引出了另一個(gè)問(wèn)題:Qt中界面與邏輯的分離,在這一點(diǎn)上應(yīng)該很好的體現(xiàn)這一思想。接著往下看:

QT_BEGIN_NAMESPACE
namespaceUi{classMainWindow;}
QT_END_NAMESPACE

本質(zhì)上,上述代碼是UI界面類(lèi)的聲明:QT_BEGIN_NAMESPACEQT_END_NAMESPACE兩個(gè)宏定義是Qt對(duì)命名空間的一個(gè)包裝,上述語(yǔ)句中,class MainWindow;則是指界面類(lèi)。當(dāng)我們的工程在編譯構(gòu)建后,會(huì)生成一個(gè)類(lèi)似于ui_xxx.h的文件,界面類(lèi)則放置在這個(gè)文件中,本文則是ui_mainwindow.h,該文件會(huì)在對(duì)應(yīng)的源文件中包含:ca9c75ba-8bf2-11ed-bfe3-dac502259ad0.png

注:ui_xxx.h是由QtCreator根據(jù)界面中的組成元素自動(dòng)生成的,可在對(duì)應(yīng)的xxx.ui文件中查看該類(lèi)中包含了哪些界面組成元素。

由于此處mainwindow.ui文件中沒(méi)有放置多余的界面元素,故生成的文件比較簡(jiǎn)單,這里是ui_mainwindow.h文件,自動(dòng)生成代碼如下:

#ifndefUI_MAINWINDOW_H
#defineUI_MAINWINDOW_H

#include
#include
#include
#include
#include
#include

QT_BEGIN_NAMESPACE

classUi_MainWindow
{
public:
QWidget*centralwidget;
QMenuBar*menubar;
QStatusBar*statusbar;

voidsetupUi(QMainWindow*MainWindow)
{
if(MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(800,600);
centralwidget=newQWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
MainWindow->setCentralWidget(centralwidget);
menubar=newQMenuBar(MainWindow);
menubar->setObjectName(QString::fromUtf8("menubar"));
MainWindow->setMenuBar(menubar);
statusbar=newQStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

QMetaObject::connectSlotsByName(MainWindow);
}//setupUi

voidretranslateUi(QMainWindow*MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow","MainWindow",nullptr));
}//retranslateUi

};

namespaceUi{
classMainWindow:publicUi_MainWindow{};
}//namespaceUi

QT_END_NAMESPACE

#endif//UI_MAINWINDOW_H

從上述代碼可見(jiàn),在mainwindow.h文件中的:

namespaceUi{classMainWindow;}

則是對(duì)ui_mainwindow.h文件中定義的MainWindow的聲明。回到mainwindow.h文件中,在MainWindow類(lèi)中有一個(gè)私有數(shù)據(jù)成員:ui指針,該指針指向了Ui::MainWindow,且在mainwindow.cpp文件中實(shí)例了Ui::MainWindow類(lèi),而且還通過(guò)ui指針調(diào)用了setupUi()函數(shù)初始化了界面。在Qt中,正是通過(guò)這種方式將界面與邏輯進(jìn)行了關(guān)聯(lián)。

一個(gè)軟件界面由很多界面元素組成,在實(shí)際工程開(kāi)發(fā)中,通過(guò)QtCreator可以在xxx.ui文件中使用鼠標(biāo)快速進(jìn)行布局和創(chuàng)建界面組成元素。在對(duì)應(yīng)的xxx.h/.cpp文件中使用ui指針則可以引用xxx.ui文件中生成的界面元素。

『這正是Qt框架的特性!』



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4956

    瀏覽量

    73516
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    2

    文章

    318

    瀏覽量

    40582
  • 矩形
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    12774

原文標(biāo)題:學(xué)Qt,此問(wèn)題必解!

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    電子工程師知:SN74HCS238 3 - 至 8 線(xiàn)解碼器/復(fù)用器深度解析

    電子工程師知:SN74HCS238 3 - 至 8 線(xiàn)解碼器/復(fù)用器深度解析 在電子設(shè)計(jì)領(lǐng)域,解碼器/復(fù)用器是常用的基礎(chǔ)器件,今天我們就來(lái)深入剖析德州儀器(Texas Instruments
    的頭像 發(fā)表于 01-13 14:10 ?131次閱讀

    tiny4412 Qt環(huán)境搭建

    1.硬件環(huán)境 PC端:ubuntu18.04 開(kāi)發(fā)板硬件平臺(tái):tiny4412 內(nèi)核版本:linux3.5 交叉編譯器:arm-linux-gcc Qt版本:Qt5.6 2.搭建 ubuntu 下
    的頭像 發(fā)表于 10-21 09:54 ?493次閱讀
    tiny4412 <b class='flag-5'>Qt</b>環(huán)境搭建

    RK3506開(kāi)發(fā)板QT Creator開(kāi)發(fā)手冊(cè),交叉編譯工具鏈與QT應(yīng)用示例,入門(mén)必備

    本文基于觸覺(jué)智能RK3506核心板/開(kāi)發(fā)板介紹QTCreator交叉編譯配置與QT應(yīng)用示例。如需購(gòu)買(mǎi)開(kāi)發(fā)板進(jìn)行評(píng)估驗(yàn)證簡(jiǎn)介QTCreatorQtCreator?是由TheQtCompany開(kāi)發(fā)的跨平臺(tái)集成開(kāi)發(fā)環(huán)境(IDE),專(zhuān)為Qt框架設(shè)計(jì),支持C++、QML、Pyth
    的頭像 發(fā)表于 09-30 16:26 ?3522次閱讀
    RK3506開(kāi)發(fā)板<b class='flag-5'>QT</b> Creator開(kāi)發(fā)手冊(cè),交叉編譯工具鏈與<b class='flag-5'>QT</b>應(yīng)用示例,入門(mén)必備

    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—Qt工程編譯、GPU核心使用說(shuō)明

    本文圍繞創(chuàng)龍科技研發(fā)的評(píng)估板,詳細(xì)說(shuō)明 Qt 工程編譯與 GPU 核心使用方法。涵蓋基于命令行和 Qt Creator 工具的 Qt 工程編譯流程,包括交叉編譯工具鏈、Qt Versi
    的頭像 發(fā)表于 09-29 14:16 ?586次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—<b class='flag-5'>Qt</b>工程編譯、GPU核心使用說(shuō)明

    LVGL近期很多人問(wèn),那它和Qt哪個(gè)好?

    最近拜訪(fǎng)做工業(yè)控制、智能家居的客戶(hù)時(shí),常被問(wèn)到同一個(gè)問(wèn)題:嵌入式產(chǎn)品,GUI選LVGL還是Qt? 其實(shí)工具選擇沒(méi)有絕對(duì)的“好”與“壞”,但選對(duì)適配場(chǎng)景的GUI圖形用戶(hù)界面工具,能直接讓產(chǎn)品開(kāi)發(fā)效率
    的頭像 發(fā)表于 09-23 15:54 ?1201次閱讀
    LVGL近期很多人問(wèn),那它和<b class='flag-5'>Qt</b>哪個(gè)好?

    馳聲音轉(zhuǎn)換算法通過(guò)國(guó)家備案

    近日,國(guó)家互聯(lián)網(wǎng)信息辦公室公告第十三批深度合成服務(wù)算法備案信息,思馳聲音轉(zhuǎn)換算法通過(guò)備案,這也是思馳第7項(xiàng)通過(guò)備案的算法,標(biāo)志著思馳在人工智能算法合規(guī)化與場(chǎng)景落地能力上再次取得新的突破。
    的頭像 發(fā)表于 09-18 14:05 ?835次閱讀

    全國(guó)人大代表王學(xué)鋒一行蒞臨思馳調(diào)研

    日前,全國(guó)人大代表、致公黨江蘇省委會(huì)主委王學(xué)鋒一行深入人工智能領(lǐng)域領(lǐng)軍企業(yè)思馳,圍繞“以企業(yè)為主體貫通‘兩個(gè)一公里’,健全全鏈條創(chuàng)新生態(tài)體系的政策舉措”展開(kāi)深度調(diào)研。思馳副總裁李春梅熱情接待。
    的頭像 發(fā)表于 08-26 09:53 ?830次閱讀

    嵌入式工程師為什么要學(xué)QT?

    Qt對(duì)嵌入式工程師來(lái)說(shuō),真的很重要嗎? Qt是一個(gè)跨平臺(tái)的C++應(yīng)用程序開(kāi)發(fā)框架,非常適合嵌入式系統(tǒng)的開(kāi)發(fā),Qt在嵌入式開(kāi)發(fā)中具有很重要的作用。 在項(xiàng)目實(shí)踐中可以看出,Qt在工業(yè)自動(dòng)化
    發(fā)表于 08-14 15:15

    馳空調(diào)大模型解決方案

    這不是幻想,是基于思馳空調(diào)大模型解決方案發(fā)生的真實(shí)體驗(yàn),該方案深度融合了思馳自研的全鏈路智能語(yǔ)音交互技術(shù)與對(duì)話(huà)式語(yǔ)言大模型DFM,它不僅能“聽(tīng)見(jiàn)”指令,更能“聽(tīng)懂”情緒,根據(jù)用戶(hù)的習(xí)慣和喜好智能調(diào)節(jié)溫度、風(fēng)速、模式等,真正做到懂你所想。
    的頭像 發(fā)表于 07-31 17:46 ?864次閱讀

    【干貨分享】基于QT和ffmpeg硬解碼的多路攝像頭取流

    前言其實(shí)官方為我們已經(jīng)提供了三個(gè)官方實(shí)例,我打開(kāi)學(xué)習(xí)了一下,QT實(shí)例雖然也用到了信號(hào)槽,是點(diǎn)擊按鈕的信號(hào)槽,我覺(jué)的QT妙就妙在了信號(hào)槽和多線(xiàn)程,而且官方的是QT5;多路攝像頭取流案例使
    的頭像 發(fā)表于 07-29 08:05 ?1023次閱讀
    【干貨分享】基于<b class='flag-5'>QT</b>和ffmpeg硬解碼的多路攝像頭取流

    馳AI辦公本亮相京東直播間

    近日,思馳董事長(zhǎng)、CEO高始興與思馳IOT事業(yè)部首席產(chǎn)品官馬斌斌現(xiàn)身「京東3C數(shù)碼采銷(xiāo)」直播間,詳細(xì)介紹并演示了思馳AI辦公本的功能特點(diǎn),并抽取了60個(gè)思馳AI全向會(huì)議麥克風(fēng)M
    的頭像 發(fā)表于 06-09 11:10 ?961次閱讀

    基于RK3576開(kāi)發(fā)板的QT GUI例程

    EASYEAI Orin-Nano開(kāi)發(fā)板搭載了帶有xfce桌面環(huán)境的Debian系統(tǒng),支持Qt應(yīng)用程序的開(kāi)發(fā)和運(yùn)行。開(kāi)發(fā)板采用RK3576 CPU,性能強(qiáng)大,可直接在板上編譯Qt應(yīng)用程序,確保最佳
    的頭像 發(fā)表于 05-14 10:26 ?1367次閱讀
    基于RK3576開(kāi)發(fā)板的<b class='flag-5'>QT</b> GUI例程

    EtherCAT運(yùn)動(dòng)控制器實(shí)時(shí)數(shù)據(jù)的Qt示波器

    基于QT開(kāi)發(fā)調(diào)用正運(yùn)動(dòng)函數(shù)接口實(shí)現(xiàn)控制器數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)的示波器效果
    的頭像 發(fā)表于 04-17 17:12 ?745次閱讀
    EtherCAT運(yùn)動(dòng)控制器實(shí)時(shí)數(shù)據(jù)的<b class='flag-5'>Qt</b>示波器

    【技術(shù)案例】Qt 環(huán)境部署 - Ubuntu 篇

    什么是Qt?Qt是一個(gè)跨平臺(tái)C++圖形用戶(hù)界面應(yīng)用程序開(kāi)發(fā)框架,可構(gòu)建高性能的桌面、移動(dòng)及Web應(yīng)用程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣埽褂锰厥獾拇a生成
    的頭像 發(fā)表于 04-16 17:17 ?1770次閱讀
    【技術(shù)案例】<b class='flag-5'>Qt</b> 環(huán)境部署 - Ubuntu 篇

    Qt Group發(fā)布Qt AI Assistant,助力跨平臺(tái)UI開(kāi)發(fā)

    為了進(jìn)一步提升跨平臺(tái)用戶(hù)界面(UI)開(kāi)發(fā)的效率與便捷性,Qt Group近日推出了一款實(shí)驗(yàn)性工具——Qt AI Assistant。這款工具的問(wèn)世,標(biāo)志著Qt Group在簡(jiǎn)化UI開(kāi)發(fā)流程、減少
    的頭像 發(fā)表于 02-07 13:47 ?1782次閱讀