版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Qt為應(yīng)用程序設(shè)計(jì)提供了一些常用的標(biāo)準(zhǔn)對話框,如打開文件對話框、選 擇顏色對話框、信息提示和確認(rèn)選擇對話框、標(biāo)準(zhǔn)輸入對話框等,用戶無需再 自己設(shè)計(jì)這些常用的對話框,這樣可以減少程序設(shè)計(jì)工作量。在前面幾章的實(shí) 例中,或多或少地用到了其中的一些對話框。Qt預(yù)定義的各標(biāo)準(zhǔn)對話框的類,及其主要靜態(tài)函數(shù)的功能見表1 (由于輸入?yún)?shù)一般較多,省略了函數(shù)的輸入 參數(shù),只列出了函數(shù)的返回值類型)。表1 Qt預(yù)定義標(biāo)準(zhǔn)對話框?qū)υ捒虺S渺o態(tài)函數(shù)名稱函數(shù)功能QFileDialog文件對話框QString getOpenFileName() QStringList getOpenFileNames() QString
2、 getSaveFileName() QString getExistingDirectory() QUrl getOpenFileUrl()選擇打一個(gè)文件 選擇打開多個(gè)文件 選擇保存一個(gè)文件 選擇一個(gè)己有的目錄 選擇書月一個(gè)文件, 可選擇遠(yuǎn)程網(wǎng)絡(luò)文件QcolorDialog顏色對話框QColor getColor()選擇顏色QFontDialog字體對話框QFont getFont()選擇字體QinputDialog輸入對話框QString getText() int getlnt() double getDouble() QString getltem() QString getMulti
3、LineText()輸入單行文字輸入 整數(shù)輸入浮點(diǎn)數(shù) 從一個(gè)下拉列表框中 選擇輸入輸入多行 字符串QMessageBox消息框StandardButton information。 StandardButton question。 StandardButton waming() StandardButton critical。void about() void aboutQt()信息提示對話框詢 問并獲取是否確認(rèn)的 對話框警告信息提 示對話框錯(cuò)誤信息 提示對話框設(shè)置自 定義信息的關(guān)于對話 框關(guān)于Qt的對話框?qū)嵗醒菔臼褂眠@些對話框,程序運(yùn)行界面如圖 2所示。下方的文本框顯 示打開文件的文件名或
4、一些提示信息,某些對話框的輸入結(jié)果可應(yīng)用于文本框 的屬性設(shè)置,如字體和顏色。后雷才話框的使用標(biāo)準(zhǔn)對話相打開一個(gè)文件而多個(gè)文件I 選擇已有目錄保存文件選擇Bi色|ps探宇你| 標(biāo)般輸入對話框QlrfiutDlalog 輸人字符匚直人整數(shù)二 輸入浮點(diǎn)數(shù)條目選擇輸入標(biāo)幽肖息相QMessageBos questlcn information mmlng critical 心 out aUutQt清除文本框內(nèi)容C: /Users/ELengiE/Desktop/CinB+S txt|圖2運(yùn)行界面QFileDialog 對話框選擇打開一個(gè)文件若要打開一個(gè)文件,可調(diào)用靜態(tài)函數(shù)QFileDialog:getO
5、penFileName() ,“打開一個(gè)文件”按鈕的響應(yīng)代碼如下:void Dialog二on_btnOpen_clicked()選擇單個(gè)文件QString curPath=QDir:currentPath();/ 獲取系統(tǒng)當(dāng)前目錄/獲取應(yīng)用程序的路徑QString dlgTitle="選擇一個(gè)文件"/對話框標(biāo)題QString filter="文本文件(*.txt);圖片文件(*.jpg*.gif*.png);所有文件(*.*)"文件過濾器QString aFileName=QFileDialog:getOpenFileName(this,dlgTitl
6、e,curPath,filter);if(!aFileName.isEmpty()ui->plainTextEdit->appendPlainText(aFileName);QFileDialog:getOpenFileName()函數(shù)需要傳遞3個(gè)字符串型參數(shù),分別如下:1 .對話框標(biāo)題,這里設(shè)置為"選擇一個(gè)文件”。2 .初始化目錄,打開對話框時(shí)的初始目錄,這里用 QDinxurrentPath()獲取應(yīng)用 程序當(dāng)前目錄。3 .文件過濾器,設(shè)置選擇不同后綴的文件,可以設(shè)置多組文件,如:QString f ilter="文本文件.txt); 圖片文件(* .jpg
7、 *.gif *.png); 所有文件(*.*)";每組文件之間用兩個(gè)分號(hào)隔開,同一組內(nèi)不同后綴之間用空格隔開。 QFileDialog:getOpenFileName()函數(shù)返回的是選擇文件的帶路徑的完整文件名,如果在對話框里取消選擇,則返回字符串為空。選擇打開多個(gè)文件若要選擇打開多個(gè)文件,可使用靜態(tài)函數(shù) QFileDialog:getOpenFileNames() , “打開多個(gè)文件”按鈕的響應(yīng)代碼如下:void Dialog:on_btnOpenMulti_clicked() 選擇多個(gè)文祥/獲取應(yīng)用程序的路徑QString curPath=QDir:currentPath();
8、/ 獲取系統(tǒng)當(dāng)前目錄QString dlgTitle="選擇多個(gè)文件"/對話框標(biāo)題QString filter="文本文件(*.txt);圖片文件(*.jpg *.gif *.png);所有文件(*.*)"文件過濾器QStringList fileList=QFileDialog:getOpenFileNames(this,dlgTitle,curPathfilter);for (int i=0; i<fileList.count();i+)ui->plainTextEdit->appendPlainText(fileList.at(i
9、); getOpenFileNames()函數(shù)的傳遞參數(shù)與 getOpenFileName()一樣,只是 返回值是一個(gè)字符串列表,列表的每一行是選擇的一個(gè)文件。選擇已有目錄選擇己有目錄可調(diào)用靜態(tài)函數(shù)QFileDialog:getExistingDirectory() ,同樣,若需要傳遞對話框標(biāo)題和初始路徑,還應(yīng)傳遞一個(gè)選項(xiàng),一般用 QFileDialog:ShowDirsOnly ,表示對話框中只顯示目錄。靜態(tài)函數(shù) QCoreApplication:applicationDirPath()返回應(yīng)用程序可執(zhí)行文件所在的目錄,getExistingDirectory()函數(shù)的返回值是選擇的目錄名稱
10、字符串。選擇保存文件名選擇一個(gè)保存文件,使用靜態(tài)函數(shù)QFileDialog:getSaveFileName() ,傳遞的參數(shù)與getOpenFileName() 函數(shù)相同。只是在調(diào)用 getSaveFileName() 函數(shù)時(shí),若選擇的是一個(gè)己經(jīng)存在的文件,會(huì)提示是否覆蓋原有的文件。如果 提示覆蓋,會(huì)返回為選擇的文件,但是并不會(huì)對文件進(jìn)行實(shí)質(zhì)操作,對文件的 刪除操作需要在選擇文件之后自己編碼實(shí)現(xiàn)。如下面的代碼,即使選擇覆蓋文件,由于代碼里沒有實(shí)質(zhì)地覆蓋原來的文 件,也不會(huì)對選擇的文件造成任何影響:void Dialog:on_btnSave_clicked()保存文件 一 一QString c
11、urPath=QCoreApplication二applicationDirPath(); 獲取應(yīng)用程序的路徑QString dlgTitle="保存文件"/對話框標(biāo)題QString filter="文本文件(*.txt);h文件(*.h);G+文件(.cpp);所有文件(*.*)"文件過濾器 QString aFileName=QFileDialog:getSaveFileName(this,dlgTitle,curPathfilter);if (!aFileName.isEmpty()ui->plainTextEdit->appendPl
12、ainText(aFileName);QColorDialog 對話框QColorDialog是選擇顏色對話框,選擇顏色使用靜態(tài)函數(shù) QColorDialog:getColor() 。下面是“選擇顏色”按鈕的代碼,它為文本框的 字體選擇顏色。void Dialog:on_btnColor_clicked()一 一QPalette pal=ui->plainTextEdit->palette(); 獲取現(xiàn)有 paletteQColor iniColor=pal.c010r(QPalette:Text); 現(xiàn)有的文字顏色QColor color=QColorDialog:getColo
13、r(iniColor,this,"選擇顏色");if (color.isValid() 選擇有效pal.setC010r(QPalette:Text,color); palette 設(shè)置選擇的顏色ui->plainTextEdit->setPalette(pal); 設(shè)置 palette getColor()函數(shù)需要傳遞一個(gè)初始的顏色,這里是將palette提取的文本顏色作為初始顏色。getColor()函數(shù)返回一個(gè)顏色變量,若在顏色對話框里取消選擇,則返回的顏色值無效,通過 QColor:isValid() 函數(shù)來判斷返回是否 有效。QFontDialog 對
14、話框QFontDialog是選擇字體對話框,選擇字體使用靜態(tài)函數(shù)。QFontDialog:getFont()。下面是“選擇字體”按鈕的代碼,它為文本框選擇 字體,字體設(shè)置的內(nèi)容包括字體名稱、大小、粗體、斜體等。void Dialog:on_btnFont_clicked()/選擇字體QFont iniFont=ui->plainTextEdit->font(); / 獲取文本框的字體 bool ok=false;QFont font=QFontDialog:getFont(&ok,iniFont); / 選擇字體if (ok) /選擇有效ui->plainTextEd
15、it->setFont(font);gctFont() 返回一個(gè)字體變量,但是 QFont沒有類似于isValid() 的函 數(shù)來判斷有效性,所以在調(diào)用 getFont() 函數(shù)時(shí)以引用方式傳遞一個(gè)邏輯變量 ok,調(diào)用后通過判斷ok是否為true 來判斷字體選擇是否有效。QInputDialog標(biāo)準(zhǔn)輸入對話框QInputDialog有單行字符串輸入、整數(shù)輸入、浮點(diǎn)數(shù)輸入、列表框選擇輸 入和多行文本等多種輸入方式,圖 3是其中4種界面效果。H輸入文字對話框? X請輸入文件名新建文件. txt0 策| Cancel i喻入浮點(diǎn)數(shù)對話噂? X箱七型點(diǎn)數(shù)厘13-:OK Cancel ,輸入整數(shù)對
16、話梃? X謾匿字體大小10圄KCancel門條目選擇對話推? X請迭擇級(jí)別須、OKCancel圖3 QinputDialog 4 種輸入對話框輸入文字QInputDialog:getText()函數(shù)顯示一個(gè)對話框用于輸入字符串,傳遞的參數(shù)包括對話框標(biāo)題、提示標(biāo)簽文字、缺省輸入、編輯框響應(yīng)模式等。其中編 輯框響應(yīng)模式是枚舉類型QLineEdit:EchoMode ,它控制編輯框上文字的顯示 方式,正常情況下選擇 QLineEdit:Normal ;如果是輸入密碼,選擇 QLineEdit:Password 。代碼如下:void Dialog:on_btnInputString_clicked()
17、 輸入字符串QString dlgTitle="輸入文字對話框"QString txtLabel="請輸入文件名"QString defaultInput="新建文件.txt"QLineEdit:EchoMode echoMode=QLineEdit:Normal; 正常文字輸入 QLineEdit:EchoMode echoMode=QLineEdit二Password;/ 密碼輸入 bool ok=false;QString text = QinputDialog二getText(this, dlgTitle,txtLabel,
18、echoMode,defaultInput, &ok);if (ok && !text.isEmpty()ui->plainTextEdit->appendPlainText(text);輸入整數(shù)使用QInputDialog:getInt()函數(shù)輸入一個(gè)整數(shù),下面的代碼為文本選擇字體大?。簐oid Dialog:on_btnInputInt_clicked()/輸入整數(shù)QString dlgTitle="輸入整數(shù)對話框"QString txtLabel="設(shè)置字體大小"int defaultValue=ui->p
19、lainTextEdit->font().pointSize(); 現(xiàn)有字體大小int minValue=6, maxValue=50,stepValue=1; 范圍,步長 bool ok=false;int inputValue = QInputDialog:getInt(this, dlgTitle,txtLabel, defaultvalue, minValue,maxValue,stepValue,&ok);if (ok) 是否確認(rèn)輸入QFont font=ui->plainTextEdit->font();font.setPointSize(inputVal
20、ue);ui->plainTextEdit->setFont(font);輸入整數(shù)對話框使用一個(gè)SpinBox組件輸入整數(shù),getInt() 需要傳遞的 參數(shù)包括數(shù)值大小范圍、步長、初始值,確認(rèn)選擇輸入后,將輸入的整數(shù)值作 為文本框字體的大小。輸入浮點(diǎn)數(shù)使用QInputDialog:getDouble()函數(shù)輸入一個(gè)浮點(diǎn)數(shù),輸入對話框使用一個(gè)QDoubleSpinBox作為輸入組件,getDouble()的輸入?yún)?shù)需要輸入范圍、初始值、小數(shù)點(diǎn)位數(shù)等。代碼如下:void Dialog:on_btnInputFloat_clicked() 輸入浮點(diǎn)數(shù)QString dlgTitle=&
21、quot;輸入浮點(diǎn)數(shù)對話框"QString txtLabel="輸入一個(gè)浮點(diǎn)數(shù)"float defaultValue=3.13;float minValue=0, maxValue=10000; / 范圍int decimals=2;小數(shù)點(diǎn)位數(shù)bool ok=false;float inputValue = QInputDialog:getDouble(this, dlgTitle,txtLabel, defaultValue, minValue,maxValue,decimals,&ok);if (ok) /確認(rèn)選擇QString str=QString
22、:asprintf("輸入了一個(gè)浮點(diǎn)數(shù):%.2f",inputValue);ui->plainTextEdit->appendPlainText(str); 下拉列表選擇輸入使用QInputDialog:getItem()可以從一個(gè)ComboBox組件的下拉列表中選擇輸入。代碼如下:void Dialog:on_btnInputItem_clicked()條目選擇輸入QStringList items; /ComboBox 列表的內(nèi)容items <<"優(yōu)秀"<<"良好"<<"合
23、格"<<"不合格"QString dlgTitle="條目選擇對話框"QString txtLabel="請選擇級(jí)別"int curIndex=0; 初始選擇項(xiàng)bool editable=true; /ComboBox 是否可編輯bool ok=false;QString text = QInputDialog:getItem(this, dlgTitle,txtLabel,items,curIndex,editable,&ok);if (ok && !text.isEmpty()ui-&
24、gt;plainTextEdit->appendPlainText(text);getItem() 函數(shù)需要一個(gè) QStringList 變量為其ComboBox組件做條目初 始化,curIndex 指明初始選擇項(xiàng),editable 表示對話框里的ComboBoxi否可 編輯,若不能編輯,則只能在下拉列表中選擇。QMessageBox消息對話框簡單信息提示消息對話框QMessageBox用于顯示提示、警告、錯(cuò)誤等信息,或進(jìn)行確認(rèn) 選擇,由幾個(gè)靜態(tài)函數(shù)實(shí)現(xiàn)這些功能(詳見表1) o其中warning。、information。、critical() 和about() 這幾個(gè)函數(shù)的輸入?yún)?shù)和使
25、用方法相同,只是信息提示的圖標(biāo)有區(qū)別。例如,warning。 的函數(shù)原型是:StandardButton QMessageBox:warning(QWidget *parent, const QString&title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)其中,parent是對話框的父窗口,指定父窗口之后,打開對話框時(shí),對話 框?qū)⒆詣?dòng)顯示在父窗口的上方中間位置;title是對話框標(biāo)題字符串;text是對話框需要顯7K的信息字符串;b
26、uttons是對話框提供的按鈕,缺省只有一個(gè) OK按鈕;defaultButton是缺省選擇的按鈕,缺省表示沒有選擇。warning() 函數(shù)的返回結(jié)果是StandardButton 類型。對話框上顯示的按 鈕和缺省選中按鈕也是StandardButton 類型。StandardButton 是各種按鈕的 定義,如 OK、Yes、No Cancel 等,其枚舉取值是 QMessageBox:Ok、 QMessageBox二Cancel、QMessageBox二Close 等。詳見Qt幫助文檔中的StandardButton 類型的說明。對于 warning() 、 information()
27、、 critical() 和 about()這幾種對話框,它們一般只有一個(gè)OK按鈕,且無須關(guān)心對話框的返回值。所以,使用缺省的 按鈕設(shè)置即可。 infornnation 消息框X文件已經(jīng)打開,字體大小已設(shè)置0K 1 warning 消息框 X文件內(nèi)容已經(jīng)被修改/ I 0K1 c市值悄息框X有不明程序訪問網(wǎng)絡(luò). h bout消息框X我開發(fā)的數(shù)據(jù)查看軟件VI。 保苗所有版權(quán)圖4 QMessageBox的幾種消息提示對話框例如,下面是程序中調(diào)用QMessageBox信息顯示的代碼(顯示的幾個(gè)對話框 如圖4所示):void Dialog:on_btnMsgInformation_clicked()一一
28、QString dlgTitle="information 消息框";QString strInfo="文件已經(jīng)打開,字體大小已設(shè)置"QMessageBox:information(this, dlgTitle, strInfo, QMessageBox:Ok,QMessageBox:NoButton);void Dialog:on_btnMsgWarning_clicked()一一QString dlgTitle="warning 消息框"QString strInfo="文件內(nèi)容已經(jīng)被修改 "QMessageB
29、ox:warning(this, dlgTitle, strInfo);void Dialog:on_btnMsgCritical_clicked()一一QString dlgTitle="critical 消息框"QString strInfo="有不明程序訪問網(wǎng)絡(luò)"QMessageBox:critical(this, dlgTitle, strInfo);void Dialog:on_btnMsgAbout_clicked()一一QString dlgTitle="about 消息框";QString strInfo="
30、我開發(fā)的數(shù)據(jù)查看軟件V1.0 n保留所有版權(quán)"QMessageBox:about(this, dlgTitle, strInfo);確認(rèn)選擇對話框QMessageBox:question()函數(shù)用于打開一個(gè)選擇對話框,提示信息,并 提供Yes、No OK Cancel等按鈕,用戶單擊某個(gè)按鈕返回選擇,如常見的文 件保存確認(rèn)對話框如圖5所示。|一9 Questiori 消息框文件已被修改,是否保存修改?vesNoCancel圖 5 QMessageBox: question。生成的對話框靜態(tài)函數(shù)QMessageBox:question() 的原型如下:StandardButton QMessageBox二question(QWidget *parent,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《心臟康復(fù)培訓(xùn)》課件
- 小學(xué)一年級(jí)20以內(nèi)加減法混合運(yùn)算
- 小學(xué)五年級(jí)數(shù)學(xué)小數(shù)乘除法計(jì)算練習(xí)題 集
- 二年級(jí)上冊21 雪孩子(教案)
- 2025年1月內(nèi)蒙古自治區(qū)普通高等學(xué)校招生考試適應(yīng)性測試(八省聯(lián)考)歷史試題
- 《新地產(chǎn)營銷新機(jī)會(huì)》課件
- 混凝土路面施工協(xié)議書
- 口腔科護(hù)士的工作總結(jié)
- 育人為本點(diǎn)滴栽培班主任工作總結(jié)
- 浴室用品銷售工作總結(jié)
- 2024年領(lǐng)導(dǎo)干部任前廉政知識(shí)考試測試題庫及答案
- 中醫(yī)辨證-八綱辨證(中醫(yī)學(xué)課件)
- 冠脈介入進(jìn)修匯報(bào)
- 蔣詩萌小品《誰殺死了周日》臺(tái)詞完整版
- 生涯發(fā)展展示
- 報(bào)價(jià)單(報(bào)價(jià)單模板)
- 整改回復(fù)書樣板后邊附帶圖片
- 先進(jìn)物流理念主導(dǎo)和先進(jìn)物流技術(shù)支撐下的日本現(xiàn)代物流
- 建筑小區(qū)生雨水排水系統(tǒng)管道的水力計(jì)算
- 公務(wù)員職務(wù)和級(jí)別工資檔次套改及級(jí)別對應(yīng)表
- 社會(huì)團(tuán)體選舉辦法
評論
0/150
提交評論