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

【Qt】如何在Qt應(yīng)用程序中使用設(shè)計(jì)好的UI文件

這篇具有很好參考價(jià)值的文章主要介紹了【Qt】如何在Qt應(yīng)用程序中使用設(shè)計(jì)好的UI文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、導(dǎo)讀

本質(zhì)上,Qt Designer的ui文件是一個(gè)以XML格式書寫的文件,文件中內(nèi)容描述了一個(gè)界面的widget關(guān)系樹。這個(gè)文件在以下兩種情況下會(huì)使用到:

  • (1)在編譯的時(shí)候,這意味著ui文件將被轉(zhuǎn)換為可編譯的c++代碼,這個(gè)過程由uic完成。
  • (2)在應(yīng)用程序運(yùn)行的時(shí)候,ui文件將由QUiLoader類處理,該類用于解析XML文件并動(dòng)態(tài)構(gòu)造widget樹。

本文描述第一種情況:在編譯的時(shí)候使用ui文件。描述ui文件背后的機(jī)制,以及如何在應(yīng)用程序中使用設(shè)計(jì)好的ui文件。

二、編譯過程中對(duì)ui文件的處理

? 在實(shí)際項(xiàng)目開發(fā)中,使用Qt Designer創(chuàng)建用戶界面組件(當(dāng)然也完全可以使用代碼描述),并使用Qt的集成構(gòu)建工具qmakeuic在構(gòu)建應(yīng)用程序時(shí)為生成代碼,這個(gè)過程是集成開發(fā)環(huán)境完成的。生成的代碼包含了ui文件中描述的用戶界面對(duì)象,它是一個(gè)c++結(jié)構(gòu)體,包含以下幾個(gè)內(nèi)容:

  • (1)指向窗體小部件、布局、布局項(xiàng)、按鈕組和操作的指針。
  • (2)名為setupUi()的成員函數(shù),用于在父部件上構(gòu)建部件樹。
  • (3)名為retranslateUi()的成員函數(shù),用于處理ui文件字符串屬性的轉(zhuǎn)換。

生成的代碼可以在應(yīng)用程序中包含,并可以直接使用。除此之外,還可以用于擴(kuò)展標(biāo)準(zhǔn)小部件的子類。

了解了QtCreator對(duì)ui文件背后的處理機(jī)制,下文將來看看如何在編譯構(gòu)建過程中使用ui文件。

三、在編譯過程中如何使用ui文件

主要有三種方法在編譯過程中使用ui文件:1、直接附加、2、單繼承方式、3、多繼承方式。

1、直接附加:構(gòu)造一個(gè)小部件作為組件的占位符,并在其中設(shè)置用戶界面。

2、單繼承方式:子類化Qt標(biāo)準(zhǔn)界面元素的基類(例如QWidget或QDialog),并包括ui用戶界面對(duì)象的私有實(shí)例。

3、多繼承方式:將ui文件的基類和表單的用戶接口對(duì)象都子類化。這允許從子類的范圍內(nèi)直接使用ui文件中定義的小部件。

(3-1)直接附加方式

此處,創(chuàng)建一個(gè)名為widget.ui的ui文件:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

為了使用直接附加的方法使用ui文件,直接在main.cpp中包含ui_widget.h文件:

#include "ui_widget.h"

然后在主函數(shù)中構(gòu)造一個(gè)標(biāo)準(zhǔn)的QWidget,用于創(chuàng)建widget小部件,我們則使用這個(gè)QWidget來托管由widget描述的用戶界面ui文件,完整代碼如下:

#include "ui_widget.h"

int main(int argc,char *argv[])
{
   QApplication app(argc,argv);

   QWidget *w = new QWidget;
   Ui::Widget ui;
   ui.setupUi(w);

   w->show();

   return app.exec();
}

直接附加方法是一種在應(yīng)用程序中快速使用組件的簡(jiǎn)單方法。但是在實(shí)際開發(fā)中,使用Qt Designer創(chuàng)建的組件通常需要與應(yīng)用程序的其余代碼進(jìn)行緊密的集成。例如,上面提供的widget代碼將編譯并運(yùn)行,但是界面中的對(duì)象之間不會(huì)進(jìn)行交互。為了實(shí)現(xiàn)這一點(diǎn),則需要使用單繼承方法。

(3-2)單繼承方式

使用單繼承方式,需要子類化一個(gè)標(biāo)準(zhǔn)的Qt小部件,并在其中包括ui用戶界面對(duì)象的私有實(shí)例??梢圆扇∫韵聝煞N方式的任意一種:

(1)成員變量方式

(2)指向成員變量的指針

成員變量方式

在這種方法中,子類化了一個(gè)Qt小部件,并從構(gòu)造函數(shù)中setupUi()用戶界面。以這種方式使用的組件將ui文件中使用的小部件和布局公開給Qt小部件子類,并提供一個(gè)標(biāo)準(zhǔn)系統(tǒng),用于在用戶界面和應(yīng)用程序中的其他對(duì)象之間建立信號(hào)和槽函數(shù)連接。

為了確??梢哉J褂糜脩艚缑妫枰谧宇惢腝t小部件描述文件中包含uic生成的頭文件,然后引用Ui::Widget(本文是Widget.ui界面文件):

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

子類化了一個(gè)Qt小部件子類的構(gòu)造函數(shù)通過調(diào)用ui對(duì)象的setupUi()函數(shù)來構(gòu)造和配置界面中的所有小部件和布局:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

這種方法的優(yōu)點(diǎn)是:簡(jiǎn)單使用繼承來提供了基于QWidget的接口,并將用戶界面小部件變量封裝在ui數(shù)據(jù)成員中。我們可以使用這個(gè)方法在同一個(gè)小部件中定義多個(gè)用戶界面,每個(gè)界面都包含在自己的名稱空間中,并可以覆蓋(或組合)它們。

指向成員變量的指針

采用這種方式,對(duì)ui用戶界面對(duì)象的寫法上就變成了指向Ui::Widget的指針:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

對(duì)應(yīng)的源文件則是:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

這種方法的優(yōu)點(diǎn)是:用戶界面對(duì)象可以預(yù)先聲明,這意味著不必在頭文件中包含生成的ui_Widget.h文件,然后可以在不重新編譯相關(guān)源文件的情況下更改ui文件。

可見,這兩種方法都能使用ui文件,但推薦使用指向成員變量的指針的方式使用ui文件,這也是庫和大型應(yīng)用程序開發(fā)的方法,況且使用QtCreator新文件創(chuàng)建向?qū)砑拥膗i界面類則是以這種方式生成的代碼。

(3-3)多繼承方式

使用Qt Designer創(chuàng)建的ui文件可以與標(biāo)準(zhǔn)的基于QWidget的類一起子類化。通過這種方法,可以在子類的范圍內(nèi)直接訪問ui文件中定義的所有用戶界面組件,并能夠使用connect()函數(shù)建立信號(hào)和槽函數(shù)連接。

本文創(chuàng)建了Widget.ui界面描述文件,首先則需要在子類中包含使用uic從Widget生成的頭文件:

#include "ui_widget.h"

接著在這個(gè)類的定義中需繼承QWidget和Ui::Widget,可以私有的繼承Ui::Widget,以確保用戶界面對(duì)象在子類中是私有的。當(dāng)然還可以將其與public或protected關(guān)鍵字一起繼承,就像在前面的例子中可以讓ui為public或protected一樣。如下所示:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

對(duì)應(yīng)的源碼文件則是:

qt在.ui使用,小生聊【Qt】,qt,ui,QtCreator,C++

在多繼承方式中,用戶界面中使用的小部件的訪問方式與手工在代碼中創(chuàng)建的小部件的一樣。除此之外,我們不再需要ui前綴來訪問這些小部件了。

四、總結(jié)

以上三種在進(jìn)行應(yīng)用程序編譯時(shí)使用ui文件的方法,其目的都是以如何在應(yīng)用程序設(shè)計(jì)和編寫中使用UI文件中所描述的Widget為目的展開的。直接附加方法較為簡(jiǎn)單,在開發(fā)幾乎不使用。單繼承方式較為常用,其次是多繼承方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-792202.html

到了這里,關(guān)于【Qt】如何在Qt應(yīng)用程序中使用設(shè)計(jì)好的UI文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 「Qt中文教程指南」如何創(chuàng)建基于Qt Widget的應(yīng)用程序(四)

    「Qt中文教程指南」如何創(chuàng)建基于Qt Widget的應(yīng)用程序(四)

    Qt?是目前最先進(jìn)、最完整的跨平臺(tái)C++開發(fā)工具。它不僅完全實(shí)現(xiàn)了一次編寫,所有平臺(tái)無差別運(yùn)行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運(yùn)用于超過70個(gè)行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬設(shè)備及應(yīng)用。 本文描述了如何使用Qt Creator創(chuàng)建一個(gè)小的Qt應(yīng)用程序

    2024年02月06日
    瀏覽(11)
  • 06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    常用的窗體基類是QWidget、QDialog 和QMainWindow,在創(chuàng)建 GUI應(yīng)用程序時(shí)選擇窗體基類就是從這 3 個(gè)類中選擇。QWidget 直接繼承于 QObject,是 QDialog 和 QMainWindow 的父類,其他繼承于 QWidget 的窗體類還有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外還有一個(gè)類QWindow,它同時(shí)從 QObject 和Q

    2024年02月13日
    瀏覽(26)
  • PyQt應(yīng)用程序中的多線程:使用Qt還是Python線程?

    PyQt應(yīng)用程序中的多線程:使用Qt還是Python線程?

    多線程模塊能夠更加高效得完成任務(wù),但是在PyQt 應(yīng)用程序中實(shí)現(xiàn)多線程可以使用 Qt 的線程模塊(QThread)或者 Python 的 threading 模塊。兩者各有優(yōu)劣,具體選擇取決于項(xiàng)目需求和個(gè)人偏好。下面我們將以案例來說明兩種模塊具體得優(yōu)缺點(diǎn)。 1、問題背景 在 PyQt 應(yīng)用程序中,編

    2024年02月22日
    瀏覽(31)
  • 使用linuxdeploy-x86_64.AppImage打包QT應(yīng)用程序的步驟

    使用AppImage打包名為irSync的QT應(yīng)用程序的重新生成步驟 應(yīng)用程序名為myApp? icon名為:logo.png 1.創(chuàng)建一個(gè)名為PacketAppDir的文件夾。 2.準(zhǔn)備myApp.desktop文件,文件內(nèi)容為: [Desktop Entry] Version=1.0 Type=Application Name=myApp Exec=myApp Icon=logo Categories=Utility; 3.準(zhǔn)備腳本文件AppRun,內(nèi)容如下 #!/bin/

    2024年02月08日
    瀏覽(94)
  • C#程序設(shè)計(jì)——Windows應(yīng)用程序開發(fā),1、初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。2、掌握常用窗體控件的使用方法。

    C#程序設(shè)計(jì)——Windows應(yīng)用程序開發(fā),1、初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。2、掌握常用窗體控件的使用方法。

    初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。 掌握常用窗體控件的使用方法。 1、設(shè)計(jì)一個(gè)Windows應(yīng)用程序,創(chuàng)建一個(gè)用于添加學(xué)生個(gè)人基本信息的窗體,窗體下方法同時(shí)滾動(dòng)信息“天行健,君子以自強(qiáng)不息!”。 ? 要示如下: 如圖1所示,設(shè)計(jì)窗體界面控件的布局 圖1 學(xué)生信息管理

    2024年02月10日
    瀏覽(39)
  • 如何使用 Python 創(chuàng)建 Twitter 應(yīng)用程序

    簡(jiǎn)介 通過訪問 Twitter API,您可以管理社交媒體賬戶,并且可以從社交媒體中獲取數(shù)據(jù)。如果您代表一個(gè)企業(yè)或組織,這對(duì)品牌推廣很有幫助;對(duì)于個(gè)人用戶和業(yè)余程序員來說,這也可以是一種有趣的娛樂方式。 在本文中,我們將概述創(chuàng)建 Twitter 應(yīng)用程序所需的步驟。 然后,

    2024年02月20日
    瀏覽(24)
  • 如何使用代碼混淆技術(shù)保護(hù)移動(dòng)應(yīng)用程序安全

    如何使用代碼混淆技術(shù)保護(hù)移動(dòng)應(yīng)用程序安全

    在移動(dòng)應(yīng)用開發(fā)過程中,代碼保護(hù)一直是一個(gè)重要的議題。為了保護(hù)應(yīng)用程序免受黑客攻擊和逆向工程師的破解,開發(fā)人員使用各種方法來加強(qiáng)應(yīng)用程序的安全性。其中,代碼混淆是一種常用的技術(shù),可以通過對(duì)代碼進(jìn)行混淆、壓縮和重命名等操作,使得應(yīng)用程序的代碼難以

    2024年01月17日
    瀏覽(32)
  • 如何使用Vue.js構(gòu)建桌面應(yīng)用程序

    Vue.js是一個(gè)流行的JavaScript框架,可以用于構(gòu)建Web應(yīng)用程序。但是,Vue.js也可以用于構(gòu)建桌面應(yīng)用程序。本文將介紹如何使用Vue.js構(gòu)建桌面應(yīng)用程序,包括以下步驟: 1. 選擇一個(gè)Vue.js框架:選擇一個(gè)適合你的Vue.js框架。我們推薦使用Electron,因?yàn)樗亲盍餍械淖烂鎽?yīng)用程序框架

    2024年02月15日
    瀏覽(20)
  • 如何在Android設(shè)備上檢查應(yīng)用程序使用情況,包括使用時(shí)間

    如何在Android設(shè)備上檢查應(yīng)用程序使用情況,包括使用時(shí)間

    你可能不知道自己花了多少時(shí)間在手機(jī)上。很可能你一天中有一半的時(shí)間都在盯著手機(jī)屏幕。如果你懷疑這一事實(shí),你會(huì)很快核實(shí)的。在這篇文章中,我們將向你介紹如何在Android設(shè)備上檢查應(yīng)用程序的使用情況。 你使用時(shí)間最長(zhǎng)的應(yīng)用程序可能會(huì)消耗最多的電池。然而,有

    2024年02月07日
    瀏覽(22)
  • 遷移到云原生:如何使用微服務(wù)遷移應(yīng)用程序

    企業(yè)遇到大規(guī)模部署和監(jiān)督生產(chǎn)中的應(yīng)用程序的任務(wù)。幸運(yùn)的是,我們可以使用大量技術(shù)和工具。然而,從傳統(tǒng)的,整體的結(jié)構(gòu)轉(zhuǎn)變?yōu)樵茟B(tài)一個(gè)人提出了自己的障礙。在這里,您會(huì)發(fā)現(xiàn)將應(yīng)用程序從整體設(shè)置轉(zhuǎn)移到基于微服務(wù)的體系結(jié)構(gòu)時(shí)要進(jìn)行的基本初始步驟列表。 Compa

    2024年02月03日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包