Qt中的標準對話框



一、標準對話框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界面與業務邏輯經過數據對象鏈接

相關文章
相關標籤/搜索