欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    前言

    Qt中對話框是幾乎每個項目都會用到的GUI窗口對象。本文通過講解及其子類在項目中經(jīng)常被用到的功能點,幫助小伙伴們理解和掌握其使用方法。

    是Qt對話框類樹中的基類,Qt為我們提供了很多子類,即標準對話框,實現(xiàn)了豐富的對話框功能。下面我們先看一下本身需要關(guān)注的一些問題。

    模態(tài)對話框

    一句話描述模態(tài)對話框:

    除模態(tài)對話框外,用戶無法選擇并操作其他窗口,只有關(guān)閉了模態(tài)對話框,用戶才能操作其他窗口。

    下面的代碼,用::exec函數(shù)實現(xiàn)了模態(tài)對話框(請結(jié)合Qt中的類幫助文檔閱讀下面的代碼):

    bootstrap模態(tài)框按鈕_模態(tài)對話框是什么時候?qū)嵗膶υ捒騙bootstrap模態(tài)框傳值

    等效于

    原理上,exec函數(shù)是阻塞執(zhí)行的,直到模態(tài)對話框關(guān)閉才返回,可以看出,exec內(nèi)部有一個自己的消息循環(huán),一直在循環(huán)處理消息。用代碼模擬如下:

    而調(diào)用show函數(shù)是不需要對話框關(guān)閉就會立即返回的,相當于(true),僅僅設(shè)置了允許窗口顯示的標記而已。先調(diào)用(true),再調(diào)用show()仍然是立即返回的,這種情況下,模態(tài)對話框使用的消息循環(huán)是main函數(shù)中app.exec中的啟動的應(yīng)用全局消息循環(huán)。原理上嘗試理解即可,暫時不需要掌握,在后面的文章中會有對消息循環(huán)()的專門講解。

    使用場景

    exec阻塞執(zhí)行方式,不會將本來可以在一個函數(shù)內(nèi)實現(xiàn)的業(yè)務(wù)代碼,分散到多個函數(shù)中去。

    比如下面的例子,彈出對話框讓用戶輸入名稱,然后校驗用戶輸入的用戶名是否正確,在一個函數(shù)內(nèi)即可完成此功能:

    如果使用show會怎么樣呢?使用show實現(xiàn)同樣的功能,代碼如下:

    bootstrap模態(tài)框按鈕_bootstrap模態(tài)框傳值_模態(tài)對話框是什么時候?qū)嵗膶υ捒?/></p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>可以看到,使用show來顯示對話框,不僅要使用信號槽,還要添加成員變量、添加槽函數(shù),非常麻煩,而且一個連續(xù)的業(yè)務(wù)流程代碼被分散到了多個函數(shù)中。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>exec()是開發(fā)中最常用的模塊對話框調(diào)用方法。由上面的例子可知,模態(tài)對話框一般用來在某個處理過程中,請求用戶輸入內(nèi)容,或配置必要的處理參數(shù)。而且,這樣可以保持業(yè)務(wù)處理代碼連續(xù)不分散。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>非模態(tài)對話框</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>一句話描述非模態(tài)對話框:</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>非模態(tài)對話框不會獨占用戶鼠標和鍵盤輸入,用戶可以隨時在其他窗口和非模態(tài)窗口之間切換操作。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>非模態(tài)對話框一般用來實現(xiàn)懸浮窗口。非模態(tài)對話框會懸浮在父窗口上層,父窗口通過構(gòu)造函數(shù)的參數(shù)設(shè)置。即使點擊了父窗口,非模態(tài)對話框也會保持在父窗口上層,變化僅僅是失去焦點。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>非模態(tài)對話框的典型例子是,使用文本編輯軟件如.exe,進行文本編輯時懸浮的文本搜索框,就是一種非模態(tài)對話框。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'><img style='display:block;max-height:500px;max-width:80%;margin: 10px auto;'  src='https://www.west.cn/info/upload/20180621/rqxgberxqwx.jpg' alt=

    非模態(tài)對話框使用比較簡單,定義好對話框變量后,直接調(diào)用成員函數(shù)show即可顯示,這里不做過多講解。

    子類

    說完了,下面開始介紹子類。

    Qt標準對話框

    根據(jù)使用頻率大致對子類排序,見下表,讀者可根據(jù)此順序?qū)W習(xí)使用:

    子類描述信息對話框,最常用,用于顯示提示信息、警告信息、詢問信息、致命信息,并接受用戶選擇下一步操作。文件對話框,常用,用于選擇文件、文件夾。輸入對話框,用于獲取字符串輸入、數(shù)值輸入、以及選擇列表中的某一項。、顏色和字體對話框。進度顯示對話框。錯誤信息顯示對話框,提供不再顯示某條內(nèi)容的消息的選項。向?qū)υ捒?,用于引?dǎo)用戶進行某個操作。

    自定義子類

    bootstrap模態(tài)框傳值_bootstrap模態(tài)框按鈕_模態(tài)對話框是什么時候?qū)嵗膶υ捒?/></p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>自定義子類是必備技能。很多情況下,標準對話框不滿足使用要求,此時就需要我們自定義對話框?qū)崿F(xiàn)響應(yīng)的功能。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>自定義對話框有以下幾點需要說明。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>1. done、、</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>這三個函數(shù)是自定義函數(shù)一定需要用到的函數(shù),用于控制以什么樣的狀態(tài)碼退出對話框。done函數(shù)用來退出對話框并設(shè)置退出碼。對于模態(tài)對話框,done相當于:</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>done結(jié)束對話框內(nèi)部消息循環(huán),done函數(shù)退出<strong>模態(tài)對話框是什么時候?qū)嵗膶υ捒?/strong>,隨后下一個消息循環(huán)中,exec函數(shù)中的消息循環(huán)返回,exec函數(shù)也退出,最后返回到調(diào)用對話框的代碼處。</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>相當于</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'>相當于</p>
<p style='margin-bottom:16px;color:#555555;font-size:16px;line-height:200%;text-indent:2em;'><img style='display:block;max-height:500px;max-width:80%;margin: 10px auto;'  src='https://exp-picture.cdn.bcebos.com/e1390a31dfb6326c1343e97989532f63228560bf.jpg?x-bce-process=image/resize,m_lfit,w_500,limit_1' alt=

    2. 不要用exec的返回值來傳遞內(nèi)容信息

    exec的返回值可以用來傳遞退出碼。由上述內(nèi)容可知,done、、可以用來退出對話框并設(shè)置退出碼。

    筆者在初次自定義對話框時,總想著將對話框中的輸入內(nèi)容,用exec返回。例如,將用戶在對話框中選擇的列表項索引,用done(index)來返回。這里明確地告訴小伙伴們模態(tài)對話框是什么時候?qū)嵗膶υ捒?/strong>,這樣的用法是不提倡的。因為如果是字符串,那怎么返回呢?

    正確的做法是,使用done返回用戶對編輯的確認狀態(tài),即確認設(shè)置內(nèi)容還是取消設(shè)置,確認內(nèi)容用,取消設(shè)置用。這樣一來,自定義的類需要提供對話框數(shù)據(jù)獲取接口,當exec返回后,再使用對話框?qū)ο髮嵗?,調(diào)用數(shù)據(jù)獲取接口獲取用戶編輯的數(shù)據(jù)。

    舉個簡單的例子:

    結(jié)語

    本文代碼略多,粗略地講解了Qt中對話框的類型和理解對話框工作原理的關(guān)鍵問題。細節(jié)的部分需要讀者自己去實踐,文章中無法講解得太過詳細。講解太過詳細,第一,讀起來費時費力,倒不如花時間自己寫代碼嘗試,第二,學(xué)習(xí)容易出現(xiàn)問題的地方是較難理解的地方,細節(jié)不需要面面俱到 ,用到的時候再查就可以。學(xué)習(xí)Qt某個模塊,要先把握住某一個功能模塊的運作機理、框架,而不是一頭鉆進龐雜的內(nèi)容里,沒有方向地去學(xué)習(xí),效率很低也很痛苦。

    本文是Qt基礎(chǔ)文章,筆者想盡快寫完Qt的基礎(chǔ)部分,除了基礎(chǔ)還有很多東西需要掌握,不能一直在基礎(chǔ)上轉(zhuǎn)圈圈。小伙伴們?nèi)绻幸蓡?,歡迎留言。如果問題很多,筆者會考慮建一個討論群,盡自己能力幫助想要學(xué)習(xí)Qt的同學(xué),大家一起進步。

    本文首發(fā)于微信公眾號“Qt未來工程師”。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有