1. 程式人生 > >Qt學習之路12--Qt標準對話方塊(字型對話方塊、進度條對話方塊和列印對話方塊)

Qt學習之路12--Qt標準對話方塊(字型對話方塊、進度條對話方塊和列印對話方塊)

使用預定義對話方塊的三板斧原則:定義物件後設置父元件和屬性、模態呼叫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);//傳入引數開始列印
}

這裡寫圖片描述

小結

這裡寫圖片描述