Qt學習之路12--Qt標準對話方塊(字型對話方塊、進度條對話方塊和列印對話方塊)
阿新 • • 發佈:2019-02-04
使用預定義對話方塊的三板斧原則:定義物件後設置父元件和屬性、模態呼叫exec()、根據結果判斷執行流程。
字型對話方塊
字型對話方塊屬於Qt預定義的對話方塊型別,它的作用就是通過使用者得到字型型別並返回。
QFontDialog dia(this);
dia.setWindowTitle("Font Dialog Test");
dia.setCurrentFont(QFont("Courier New", 10, QFont::Bold));//設定預設值
if(dia.exec() == QFontDialog::Accepted)
{
qDebug() << dia.selectedFont ();//如果點選OK就能獲取使用者選擇的字型型別
}
正式由於Qt內部封裝了一些複雜 的對話方塊細節才導致我們使用起來如此方便,如果要讓我們自己獨立實現一個字型對話方塊是比較複雜的,在開發中也就比較費時,所以Qt預定義了對話方塊也是為了進行軟體複用節省開發成本。
實用函式getFont [static]
QFont QFontDialog::getFont ( bool * ok, const QFont & initial, QWidget * parent, const QString & title, FontDialogOptions options )
- ok:儲存操作結果。
- initisl:預設字型
- parent:父元件
- title:標題
- options:設定對話方塊屬性
- 返回值:當用戶點選OK將返回使用者選擇的字型,點選cancel則返回預設字型。
bool ok;
QFontDialog::getFont(&ok, QFont("Courier New", 10, QFont::Bold), this, "Font Dialog");
得到的結果和使用三板斧產生的對話方塊在效果上是一致的。
進度條對話方塊
Qt中提供的預定義進度條對話方塊類叫QProgressDialog,它用於顯示進度資訊,用於需要使用者等待的場合。
QProgressDialog dia(this);
dia.setWindowTitle("Progress Dialog Test");//設定視窗標題
dia.setLabelText("Updating...");//提示標籤
dia.setMinimum(0);//設定最小值
dia.setMaximum(100);//設定最大值
dia.setValue(50);//設定進度條數值
//如何實時更新進度條?
//建立一個新執行緒或通過使用訊號與槽獲取實時的value值,後臺不斷的下載或者更新
//通過set和get方法傳遞value值,最後通過setValue()實時更新進度條
dia.exec();
列印對話方塊
Qt提供的預定義列印對話方塊用於實現列印功能。
在使用列印對話方塊時需要用到QPrinter類。
Qt中的QPrinter類是用來封裝列印裝置及其引數的。
QPrinter類封裝了系統中列印裝置的驅動介面。
QPrinter以相同的方式使用系統中的不同列印裝置。
QPrintDialog dia(this);
dia.setWindowTitle("print Dialog Test");
if(dia.exec() == QPrintDialog::Accepted)
{
QPrinter* p = dia.printer();//獲取QPrinter資料物件
QTextDocument td;
td.setPlainText("print Dialog Test");//設定列印內容
p->setOutputFileName("G:/test.pdf");//設定列印到檔名
td.print(p);//傳入引數開始列印
}