




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Qt為應(yīng)用程序設(shè)計(jì)提供了一些常用的標(biāo)準(zhǔn)對(duì)話框,如打開(kāi)文件對(duì)話框、選 擇顏色對(duì)話框、信息提示和確認(rèn)選擇對(duì)話框、標(biāo)準(zhǔn)輸入對(duì)話框等,用戶無(wú)需再 自己設(shè)計(jì)這些常用的對(duì)話框,這樣可以減少程序設(shè)計(jì)工作量。在前面幾章的實(shí) 例中,或多或少地用到了其中的一些對(duì)話框。Qt預(yù)定義的各標(biāo)準(zhǔn)對(duì)話框的類(lèi),及其主要靜態(tài)函數(shù)的功能見(jiàn)表1 (由于輸入?yún)?shù)一般較多,省略了函數(shù)的輸入 參數(shù),只列出了函數(shù)的返回值類(lèi)型)。表1 Qt預(yù)定義標(biāo)準(zhǔn)對(duì)話框?qū)υ捒虺S渺o態(tài)函數(shù)名稱(chēng)函數(shù)功能QFileDialog文件對(duì)話框QString getOpenFileName() QStringList getOpenFileNames() QString
2、 getSaveFileName() QString getExistingDirectory() QUrl getOpenFileUrl()選擇打一個(gè)文件 選擇打開(kāi)多個(gè)文件 選擇保存一個(gè)文件 選擇一個(gè)己有的目錄 選擇書(shū)月一個(gè)文件, 可選擇遠(yuǎn)程網(wǎng)絡(luò)文件QcolorDialog顏色對(duì)話框QColor getColor()選擇顏色QFontDialog字體對(duì)話框QFont getFont()選擇字體QinputDialog輸入對(duì)話框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()信息提示對(duì)話框詢 問(wèn)并獲取是否確認(rèn)的 對(duì)話框警告信息提 示對(duì)話框錯(cuò)誤信息 提示對(duì)話框設(shè)置自 定義信息的關(guān)于對(duì)話 框關(guān)于Qt的對(duì)話框?qū)嵗醒菔臼褂眠@些對(duì)話框,程序運(yùn)行界面如圖 2所示。下方的文本框顯 示打開(kāi)文件的文件名或
4、一些提示信息,某些對(duì)話框的輸入結(jié)果可應(yīng)用于文本框 的屬性設(shè)置,如字體和顏色。后雷才話框的使用標(biāo)準(zhǔn)對(duì)話相打開(kāi)一個(gè)文件而多個(gè)文件I 選擇已有目錄保存文件選擇Bi色|ps探宇你| 標(biāo)般輸入對(duì)話框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 對(duì)話框選擇打開(kāi)一個(gè)文件若要打開(kāi)一個(gè)文件,可調(diào)用靜態(tài)函數(shù)QFileDialog:getO
5、penFileName() ,“打開(kāi)一個(gè)文件”按鈕的響應(yīng)代碼如下:void Dialog二on_btnOpen_clicked()選擇單個(gè)文件QString curPath=QDir:currentPath();/ 獲取系統(tǒng)當(dāng)前目錄/獲取應(yīng)用程序的路徑QString dlgTitle="選擇一個(gè)文件"/對(duì)話框標(biāo)題QString filter="文本文件(*.txt);圖片文件(*.jpg*.gif*.png);所有文件(*.*)"文件過(guò)濾器QString aFileName=QFileDialog:getOpenFileName(this,dlgTitl
6、e,curPath,filter);if(!aFileName.isEmpty()ui->plainTextEdit->appendPlainText(aFileName);QFileDialog:getOpenFileName()函數(shù)需要傳遞3個(gè)字符串型參數(shù),分別如下:1 .對(duì)話框標(biāo)題,這里設(shè)置為"選擇一個(gè)文件”。2 .初始化目錄,打開(kāi)對(duì)話框時(shí)的初始目錄,這里用 QDinxurrentPath()獲取應(yīng)用 程序當(dāng)前目錄。3 .文件過(guò)濾器,設(shè)置選擇不同后綴的文件,可以設(shè)置多組文件,如:QString f ilter="文本文件.txt); 圖片文件(* .jpg
7、 *.gif *.png); 所有文件(*.*)";每組文件之間用兩個(gè)分號(hào)隔開(kāi),同一組內(nèi)不同后綴之間用空格隔開(kāi)。 QFileDialog:getOpenFileName()函數(shù)返回的是選擇文件的帶路徑的完整文件名,如果在對(duì)話框里取消選擇,則返回字符串為空。選擇打開(kāi)多個(gè)文件若要選擇打開(kāi)多個(gè)文件,可使用靜態(tài)函數(shù) QFileDialog:getOpenFileNames() , “打開(kāi)多個(gè)文件”按鈕的響應(yīng)代碼如下:void Dialog:on_btnOpenMulti_clicked() 選擇多個(gè)文祥/獲取應(yīng)用程序的路徑QString curPath=QDir:currentPath();
8、/ 獲取系統(tǒng)當(dāng)前目錄QString dlgTitle="選擇多個(gè)文件"/對(duì)話框標(biāo)題QString filter="文本文件(*.txt);圖片文件(*.jpg *.gif *.png);所有文件(*.*)"文件過(guò)濾器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() ,同樣,若需要傳遞對(duì)話框標(biāo)題和初始路徑,還應(yīng)傳遞一個(gè)選項(xiàng),一般用 QFileDialog:ShowDirsOnly ,表示對(duì)話框中只顯示目錄。靜態(tài)函數(shù) QCoreApplication:applicationDirPath()返回應(yīng)用程序可執(zhí)行文件所在的目錄,getExistingDirectory()函數(shù)的返回值是選擇的目錄名稱(chēng)
10、字符串。選擇保存文件名選擇一個(gè)保存文件,使用靜態(tài)函數(shù)QFileDialog:getSaveFileName() ,傳遞的參數(shù)與getOpenFileName() 函數(shù)相同。只是在調(diào)用 getSaveFileName() 函數(shù)時(shí),若選擇的是一個(gè)己經(jīng)存在的文件,會(huì)提示是否覆蓋原有的文件。如果 提示覆蓋,會(huì)返回為選擇的文件,但是并不會(huì)對(duì)文件進(jìn)行實(shí)質(zhì)操作,對(duì)文件的 刪除操作需要在選擇文件之后自己編碼實(shí)現(xiàn)。如下面的代碼,即使選擇覆蓋文件,由于代碼里沒(méi)有實(shí)質(zhì)地覆蓋原來(lái)的文 件,也不會(huì)對(duì)選擇的文件造成任何影響:void Dialog:on_btnSave_clicked()保存文件 一 一QString c
11、urPath=QCoreApplication二applicationDirPath(); 獲取應(yīng)用程序的路徑QString dlgTitle="保存文件"/對(duì)話框標(biāo)題QString filter="文本文件(*.txt);h文件(*.h);G+文件(.cpp);所有文件(*.*)"文件過(guò)濾器 QString aFileName=QFileDialog:getSaveFileName(this,dlgTitle,curPathfilter);if (!aFileName.isEmpty()ui->plainTextEdit->appendPl
12、ainText(aFileName);QColorDialog 對(duì)話框QColorDialog是選擇顏色對(duì)話框,選擇顏色使用靜態(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è)顏色變量,若在顏色對(duì)話框里取消選擇,則返回的顏色值無(wú)效,通過(guò) QColor:isValid() 函數(shù)來(lái)判斷返回是否 有效。QFontDialog 對(duì)
14、話框QFontDialog是選擇字體對(duì)話框,選擇字體使用靜態(tài)函數(shù)。QFontDialog:getFont()。下面是“選擇字體”按鈕的代碼,它為文本框選擇 字體,字體設(shè)置的內(nèi)容包括字體名稱(chēng)、大小、粗體、斜體等。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沒(méi)有類(lèi)似于isValid() 的函 數(shù)來(lái)判斷有效性,所以在調(diào)用 getFont() 函數(shù)時(shí)以引用方式傳遞一個(gè)邏輯變量 ok,調(diào)用后通過(guò)判斷ok是否為true 來(lái)判斷字體選擇是否有效。QInputDialog標(biāo)準(zhǔn)輸入對(duì)話框QInputDialog有單行字符串輸入、整數(shù)輸入、浮點(diǎn)數(shù)輸入、列表框選擇輸 入和多行文本等多種輸入方式,圖 3是其中4種界面效果。H輸入文字對(duì)話框? X請(qǐng)輸入文件名新建文件. txt0 策| Cancel i喻入浮點(diǎn)數(shù)對(duì)話噂? X箱七型點(diǎn)數(shù)厘13-:OK Cancel ,輸入整數(shù)對(duì)
16、話梃? X謾匿字體大小10圄KCancel門(mén)條目選擇對(duì)話推? X請(qǐng)迭擇級(jí)別須、OKCancel圖3 QinputDialog 4 種輸入對(duì)話框輸入文字QInputDialog:getText()函數(shù)顯示一個(gè)對(duì)話框用于輸入字符串,傳遞的參數(shù)包括對(duì)話框標(biāo)題、提示標(biāo)簽文字、缺省輸入、編輯框響應(yīng)模式等。其中編 輯框響應(yīng)模式是枚舉類(lèi)型QLineEdit:EchoMode ,它控制編輯框上文字的顯示 方式,正常情況下選擇 QLineEdit:Normal ;如果是輸入密碼,選擇 QLineEdit:Password 。代碼如下:void Dialog:on_btnInputString_clicked()
17、 輸入字符串QString dlgTitle="輸入文字對(duì)話框"QString txtLabel="請(qǐng)輸入文件名"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ù),下面的代碼為文本選擇字體大小:void Dialog:on_btnInputInt_clicked()/輸入整數(shù)QString dlgTitle="輸入整數(shù)對(duì)話框"QString txtLabel="設(shè)置字體大小"int defaultValue=ui->p
19、lainTextEdit->font().pointSize(); 現(xiàn)有字體大小int minValue=6, maxValue=50,stepValue=1; 范圍,步長(zhǎng) 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ù)對(duì)話框使用一個(gè)SpinBox組件輸入整數(shù),getInt() 需要傳遞的 參數(shù)包括數(shù)值大小范圍、步長(zhǎng)、初始值,確認(rèn)選擇輸入后,將輸入的整數(shù)值作 為文本框字體的大小。輸入浮點(diǎn)數(shù)使用QInputDialog:getDouble()函數(shù)輸入一個(gè)浮點(diǎn)數(shù),輸入對(duì)話框使用一個(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ù)對(duì)話框"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="條目選擇對(duì)話框"QString txtLabel="請(qǐng)選擇級(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 表示對(duì)話框里的ComboBoxi否可 編輯,若不能編輯,則只能在下拉列表中選擇。QMessageBox消息對(duì)話框簡(jiǎn)單信息提示消息對(duì)話框QMessageBox用于顯示提示、警告、錯(cuò)誤等信息,或進(jìn)行確認(rèn) 選擇,由幾個(gè)靜態(tài)函數(shù)實(shí)現(xiàn)這些功能(詳見(jià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是對(duì)話框的父窗口,指定父窗口之后,打開(kāi)對(duì)話框時(shí),對(duì)話 框?qū)⒆詣?dòng)顯示在父窗口的上方中間位置;title是對(duì)話框標(biāo)題字符串;text是對(duì)話框需要顯7K的信息字符串;b
26、uttons是對(duì)話框提供的按鈕,缺省只有一個(gè) OK按鈕;defaultButton是缺省選擇的按鈕,缺省表示沒(méi)有選擇。warning() 函數(shù)的返回結(jié)果是StandardButton 類(lèi)型。對(duì)話框上顯示的按 鈕和缺省選中按鈕也是StandardButton 類(lèi)型。StandardButton 是各種按鈕的 定義,如 OK、Yes、No Cancel 等,其枚舉取值是 QMessageBox:Ok、 QMessageBox二Cancel、QMessageBox二Close 等。詳見(jiàn)Qt幫助文檔中的StandardButton 類(lèi)型的說(shuō)明。對(duì)于 warning() 、 information()
27、、 critical() 和 about()這幾種對(duì)話框,它們一般只有一個(gè)OK按鈕,且無(wú)須關(guān)心對(duì)話框的返回值。所以,使用缺省的 按鈕設(shè)置即可。 infornnation 消息框X文件已經(jīng)打開(kāi),字體大小已設(shè)置0K 1 warning 消息框 X文件內(nèi)容已經(jīng)被修改/ I 0K1 c市值悄息框X有不明程序訪問(wèn)網(wǎng)絡(luò). h bout消息框X我開(kāi)發(fā)的數(shù)據(jù)查看軟件VI。 保苗所有版權(quán)圖4 QMessageBox的幾種消息提示對(duì)話框例如,下面是程序中調(diào)用QMessageBox信息顯示的代碼(顯示的幾個(gè)對(duì)話框 如圖4所示):void Dialog:on_btnMsgInformation_clicked()一一
28、QString dlgTitle="information 消息框";QString strInfo="文件已經(jīng)打開(kāi),字體大小已設(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èn)網(wǎng)絡(luò)"QMessageBox:critical(this, dlgTitle, strInfo);void Dialog:on_btnMsgAbout_clicked()一一QString dlgTitle="about 消息框";QString strInfo="
30、我開(kāi)發(fā)的數(shù)據(jù)查看軟件V1.0 n保留所有版權(quán)"QMessageBox:about(this, dlgTitle, strInfo);確認(rèn)選擇對(duì)話框QMessageBox:question()函數(shù)用于打開(kāi)一個(gè)選擇對(duì)話框,提示信息,并 提供Yes、No OK Cancel等按鈕,用戶單擊某個(gè)按鈕返回選擇,如常見(jiàn)的文 件保存確認(rèn)對(duì)話框如圖5所示。|一9 Questiori 消息框文件已被修改,是否保存修改?vesNoCancel圖 5 QMessageBox: question。生成的對(duì)話框靜態(tài)函數(shù)QMessageBox:question() 的原型如下:StandardButton QMessageBox二question(QWidget *parent,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧辦公樓宇管理系統(tǒng)建設(shè)實(shí)現(xiàn)節(jié)能減排與綠色發(fā)展
- 在線教育與醫(yī)療技術(shù)的跨界融合與創(chuàng)新發(fā)展
- 提升學(xué)習(xí)動(dòng)力教育游戲化的應(yīng)用與探索
- 智慧城市公共交通的AI監(jiān)控與風(fēng)險(xiǎn)控制
- 情緒智力在教學(xué)中的重要性
- 教育心理學(xué)在職業(yè)教育中的應(yīng)用前景
- 智慧醫(yī)療系統(tǒng)在醫(yī)療資源分配中的關(guān)鍵作用
- 教育心理學(xué)在校園欺凌防治中的作用
- 2025屆湖北省隨州市普通高中物理高二第二學(xué)期期末經(jīng)典模擬試題含解析
- 中職思政課課件下載
- 安徽省2024年普通高校招生普通本科批院校投檔分?jǐn)?shù)及名次(物理科目組合)
- LY/T 2071-2024人造板類(lèi)產(chǎn)品生產(chǎn)綜合能耗
- 戶外運(yùn)動(dòng)安全知識(shí)培訓(xùn)課件
- 2024年反洗錢(qián)考試題庫(kù)及答案
- 售樓處物業(yè)經(jīng)理年終總結(jié)
- 物業(yè)員工夏季防暑培訓(xùn)
- 水廠反恐培訓(xùn)教材
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 煤化工產(chǎn)業(yè)鏈詳解文檔課件
- 大學(xué)英語(yǔ)4綜合教程課件教學(xué)課件教學(xué)
- Module 1 語(yǔ)法Grammar 一般現(xiàn)在時(shí),一般過(guò)去時(shí),一般將來(lái)時(shí)與現(xiàn)在進(jìn)行時(shí)八年級(jí)英語(yǔ)上冊(cè)模塊語(yǔ)法精講精練(外研版)
評(píng)論
0/150
提交評(píng)論