一、標準對話框html
(1)Qt爲開發者提供了一些可複用的對話框類型設計模式
(2)Qt提供的可複用對話框所有繼承自QDialog類服務器
@1:QMessageBox(用來提示消息的對話框) QFileDialog(文件對話框) QPrintDialog QColorDialog(用來選擇一種顏色) QInputDialog QProgressDialog 這些對話框類型所有繼承自QDialog類ide
(3)Qt中標準對話框遵循相同的使用方式函數
DialogType dlg(this); //先定義對話框對象,DialogType是對話框類型,this是表示當前對話框的父窗口是什麼字體
dlg.setXXXX(XXX); //設置對話框的屬性,不一樣的對話框類型,設置的屬性是不一樣的this
if ( dlg.exec() == DialogType::Value ) //dlg.exec(),調用exec這個成員函數(模態的方式調用),這樣對話框就在屏幕上顯示出來了spa
{線程
//獲取對話框數據設計
Type v = dlg.getDialogValue();
//處理對話框數據
}
(4)消息對話框
@1:消息對話框是應用程序中最多見的界面元素
@2:消息對話框主要用於,爲用戶提示重要信息和強制用戶進行操做選擇
@3:消息對話框的使用方式
//構造消息對話框對象
QMessageBox msg(this); //this,父類就是本身,因此當前對話框作爲頂層窗口
//設置消息對話框的相關屬性
msg.setWindowTitle("Message Title"); //設置標題,框上面的內容
msg.setText("This is message content"); //設置提示消息,框中間的內容
msg.setIcon(QMessageBox::Information); //設置圖標
msg.setStandardButtons(QMessageBox::OK | QMessageBox::Cancel); //設置按鈕,一個是OK按鈕,一個是Cancel按鈕
if ( msg.exec() == QMessageBox::ok ) //調用exec函數,用戶點擊對話框中的按鈕後,返回所點擊的哪一個按鈕,若是點擊的是OK,則會進入到這個if中
{
qDebug() << "ok button is chicked";
}
@4:消息對話框QMessageBox中的實用函數
--QMessageBox::question
--QMessageBox::information
--QMessageBox::warning
--QMessageBox::critical
--QMessageBox::about
(5)文件對話框
@1:文件對話框經常使用於一下情形
-- Open Mode 應用程序中須要用戶打開一個外部的文件
-- Save Mode 應用程序中須要將當前內容存儲於用戶指定的外部文件中
@2:文件對話框的使用方式
QFileDialog fd(this); //定義文件對話框對象
//save mode: QFileDialog::AcceptSave //保存模式,保存模式時不須要設置文件打開一個或者多個那個屬性
fd.setAcceptMode(QFileDialog::AcceptOpen); //設置文件對話框的模式,打開模式
//multi-selection: QFileDialog::ExistingFiles //設置一次能夠打開多個文件
fd.setFileMode(QFileDialog::ExistingFile) //設置一次只打開一個存在的文件
if ( fd.exec() == QFileDialog::Accepted )
{
QStringList fs = fd.selectedFiles(); //selectedFiles成員函數返回用戶所選擇的文件,QStringList是一個鏈表。fs.cout()來獲得這個鏈表中的節點數。fs[i]訪問鏈表
//process variable fs
}
//文件對話框的模式:打開模式和保存模式,這兩種模式所對應的其餘設置屬性也是不一樣的
@3:打開模式:打開模式分爲兩種,第一種是打開單個文件(QFileDialog::ExistingFile),第二種是同時打開多個的文件(QFileDialog::ExistingFiles)
(6)文件類型過濾器
@1:在文件對話框中能夠經過文件後綴定義過濾器
@2:過濾器定義規則:
顯示名(*.後綴1 *.後綴2 ... *.後綴N)
例:
"Image(*.png *.xpm *.jpg)"
"Text(*.txt)"
"All(*.*)"
@3:經過成員函數setFilter()來設置
例:dlg.setFilter("Text(*.txt)");
(7)文件對話框QFileDialog中的實用函數
@1:QFileDialog::getOpenFileName
@2: QFileDialog::getOpenFileNames
@3: QFileDialog::getSaveFileName
小結:
Qt中提供了多個可複用的對話框類型,繼承於QDialog類型,遵循相同的使用方式,QMessageBox消息對話框用於提示重要的程序信息。QFileDialog文件對話框用於獲取系統中的文件路徑
六、顏色對話框
(1)、Qt中提供了預約義的顏色對話框QColorDialog類
(2)、QColorDialog類用於提供指定顏色的對話框部件
(3)、顏色對話框的使用方式
//構造顏色對話框對象
QColorDialog dlg(this);
//設置顏色對話框的相關屬性
dlg.setWindowTitle("Color Editor");
dlg.setCurrentColor(Qt::ret); //預約義初始顏色,也能夠自定義用份量來直接自定義,如dlg.setCurrentColor(QColor(100, 110, 200)); //用RGB份量來設置
if ( dlg.exec() == QColorDialog::Accepted )
{
qDebug() << dlg.selectedColor();
}
(4)、Qt中的Color類用於在程序中表示顏色的概念
(5)、QColor類同時支持多種顏色表達方式
@1:RGB:以紅、綠、藍爲基準的三色模型
@2:HSV:以色調、飽和度、明度爲基準的六角錐體模型
@3:CMYK:以天藍、品紅、×××、黑爲基準的全綵印刷色彩模型
(6)QColorDialog中的實用函數
--QColorDialog::getColor
七、輸入對話框
(1)Qt中提供了預約義的輸入對話框QInputDialog類
(2)QInputDialog類用於須要臨時進行數據輸入的場合
(3)輸入對話框的使用方式
//構造輸入對話框對象
QInputDialog dlg(this);
//設置輸入對話框的相關屬性
dlg.setWindowTitle("Input...");
dlg.setLabelText("Please enter a integer"); // 提示字符串
dlg.setInputMode(QInputDialog::IntInput); //表示當前的輸入對話框,輸入的模式是數字仍是文本,這裏要求對話框輸入的是×××數。TextInput輸入文本字符串,DoubleInput輸入浮點數
dlg.setIntMinimum(0); //設置輸入的整型的數,最小的範圍的是0
dlg.setIntMaximum(255); //設置輸入的整型的數,最大的範圍的是255
if ( dlg.exec() == QInputDialog::Accepted ) //當用戶點擊OK時,就能夠獲得用戶輸入的數據了
{
QDebug() << dlg.intValue();
}
(4)QInputDialog中的實用函數
--QInputDialog::getDouble
--QInputDialog::getInt
--QInuptDialog::getItem
--QInputDialog::getText
八、字體對話框
(1)Qt中預約義的字體對話框QFonitDialog類
(2)QFointDialog類用於提供選擇字體的對話框部件
(3)字體對話框的使用方式
//構造字體對話框對象
QFontDialog dlg(this);
//設置字體對話框的相關屬性
dlg.setWindowTitle("Foint Editor");
dlg.setCurrentFont(
QFont("Courier New", 10, QFont::Bold) //初始字體,字體爲Courier New這個字體,大小是10,Bold表示粗體顯示
);
if ( dlg.exec() == QFontDialog::Accepted )
{
qDebug() << dlg.selectedFont(); //當用戶點擊OK時,獲得用戶最終選擇的字體。
}
(4)字體對話框中的實用函數
--QFontDialog::getFont
九、進度對話框
(1)Qt中提供了預約義的進度對話框QProgressDialog類
(2)QProgressDialog類用於顯示進度信息
(3)QProgressDialog類用於須要用戶等待的場合
(4)進度對話框的使用方式
//構造進度對話框對象
QProgressDialog dlg(this);
//設置進度對話框的相關屬性
dlg.setWindowTitle("Updating...");
dlg.setLableText("Downloading from server...."); //設置提示消息
dlg.setMinimum(0); //設置最小的進度值
dlg.setMaximum(1000); //設置最大的進度值
dlg.setValue(35); //設置當前的進度值爲35,實際中多是要根據數據的狀況,咱們來給這個進度值的
//實際在這個地方,還要啓動一個後臺的線程,用來從服務器中用來真正的下載更新,這個線程中調用setvalue這個函數,根據下載的狀況來改變這個值,來達到進度條的變化
dlg.exec(); //模態的方式顯示這個進度對話框
十、打印對話框
(1)Qt中提供了預約義的打印對話框QPrintDialog類
(2)QPrintDialog類用於設置打印相關的參數信息
(3)打印對話框的使用方式
//構造打印對話框對象
QPrintDialog dlg(this);
//設置打印對話框的相關屬性
dlg.setWindowTitle("Print Dialog");
if ( dlg.exec() == QPrintDialog::Accepted )
{
QPrinter *p = dlg.printer(); //當用戶點擊打印時,跑到這句話,獲得了QPrinter對象,這個是打印,就是打印的設備,可是被打印的對象尚未,這時獲得的只是
//當前用戶在打印對話框中選擇的參數(包括打印機,大小等的參數)。未來要將被打印的對象打印到這個對象中
// use printer object to print data
QTextDocument td; //QTextDocument這個類用來表示文本文檔的,這個td文本文檔對象,未來做爲咱們打印的東西,它就是被打印的對象
//td.setPlainText("Printer object test"); //在這個文本文檔的對象中寫入內容
td.setHtml("<h1> Print html object test<\h1>"); //在html中,h1表示大的字體。這個文本文檔的對象中寫入html內容
p->setOutputFileName("D: \\test.pdf"); //設置打印的位置和名字,也就是pathname。到D盤,名字爲test.pdf。用這樣的方式模擬一下打印。
//來打印這個td文本文檔
td.print(p); //由於這個文本文檔能夠被打印,因此有print函數,打印到哪裏去呢,打印到p中,由於p是QPrinter的對象,它封裝了打印設備的參數和接口等。將td的內容
//打印到p這個指針指向的打印設備中。
}
(4)Qt中的QPrinter類是打印設備及其參數的封裝
(5)QPrinter類封裝了系統中打印設備的驅動接口
(6)QPrinter以相同方式使用系統中的不一樣打印設備
十一、小結
(1)Qt中標準對話框的設計模式
--GUI界面部件產生數據對象(好比:QColorDialog這個顏色對話框這個界面,最終會經過用戶的選擇獲得一個QColor一個數據對象)
--業務邏輯中的其餘對象使用數據對象(就是用戶選擇完畢後,程序中獲得了一個數據對象,在Qt中的其餘對象中嗎,咱們就去使用這個數據對象,就是業務邏輯,業務邏輯就是使用這個數據對象)
--GUI界面與業務邏輯經過數據對象鏈接