1. 程式人生 > 其它 >基本Widgets(20):【類】QFontComboBox [官翻]

基本Widgets(20):【類】QFontComboBox [官翻]

技術標籤:Qt

文章目錄

QFontComboBox Class

QFontComboBox小部件是一個允許使用者選擇字體系列的組合框。

Header#include < QFontComboBox >
qmakeQT += widgets
InheritsQComboBox
Inherited By

詳細說明

組合框中填充了按字母順序排列的字體系列名稱列表,如Arial、Helvetica和Times New Roman。儘可能使用實際字型顯示族名稱。對於諸如Symbol之類的字型,如果名稱不能在字型本身中表示,則會在族名稱旁邊顯示一個字型示例。

QFontComboBox通常用於工具欄,與用於控制字型大小的QComboBox和用於粗體和斜體的兩個QToolButtons一起使用。

當用戶選擇新字型時,除了currentIndexChanged() 之外,還會發出currentFontChanged() 訊號。

呼叫setWritingSystem() 告訴QFontComboBox只顯示支援給定書寫系統的字型,呼叫setFontFilters() 過濾掉某些型別的字型,例如不可縮放字型或等距字型。
Screenshot of QFontComboBox on Windows Vista

See also QComboBox, QFont, QFontInfo, QFontMetrics, QFontDatabase, and Character Map Example.

公共型別

enum FontFilter

flags FontFilters

此列舉只能用於在字型組合框中顯示某些型別的字型。

ConstantValueDescription
AllFonts0顯示所有字型
ScalableFonts0x1顯示可縮放字型
NonScalableFonts0x2顯示不可縮放字型
MonospacedFonts0x4顯示等距字型
ProportionalFonts0x8顯示比例字型

屬性

  1. currentFont: QFont 當前選定的字型

    Access functions:

    • QFont currentFont() const
    1. void setCurrentFont(const QFont &f)

    Notifier signal:

    • void currentFontChanged(const QFont &font)
  2. fontFilters: FontFilters 組合框的篩選器
    預設情況下,列出所有字型。

    Access functions:

    • QFontComboBox::FontFilters fontFilters() const
    • void setFontFilters(QFontComboBox::FontFilters filters)
  3. writingSystem: QFontDatabase::WritingSystem 用作組合框篩選器的寫入系統
    如果指令碼是QFontDatabase::Any(預設值),則列出所有字型。

    Access functions:

    • QFontDatabase::WritingSystem writingSystem() const
    1. void setWritingSystem(QFontDatabase::WritingSystem)

公共函式

構造和析構

  1. QFontComboBox(QWidget *parent = nullptr)
  2. virtual ~QFontComboBox()

屬性相關

  1. QFont currentFont() const
  2. void setCurrentFont(const QFont &f)
  3. QFontComboBox::FontFilters fontFilters() const
  4. void setFontFilters(QFontComboBox::FontFilters filters)
  5. QFontDatabase::WritingSystem writingSystem() const
  6. void setWritingSystem(QFontDatabase::WritingSystem)

重寫的公共函式

  1. virtual QSize sizeHint() const override

公共槽

  1. void setCurrentFont(const QFont &f) 屬性相關

訊號

  1. void currentFontChanged(const QFont &font)

重寫的受保護函式

  1. virtual bool event(QEvent *e) override

相關程式碼

#include <QtWidgets>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    app.setApplicationName ("QComboBox");
//    app.setStyleSheet ("QLabel{background:green}");

    QFont font = app.font ();
    font.setPixelSize (20);
    app.setFont (font);

    QWidget w;
    w.resize (300,50);
    QFrame frame1;
    QFrame frame2;
    QFrame frame3;
    QFrame frame4;
    QFrame frame5;
    QGridLayout mainLayout(&w);

    QFontComboBox widget1;
    QFontComboBox widget2;
    QFontComboBox widget3;
    QFontComboBox widget4;
    QFontComboBox widget5;

    QLabel label1("AllFonts");
    QLabel label2("ScalableFonts");
    QLabel label3("NonScalableFonts");
    QLabel label4("MonospacedFonts");
    QLabel label5("ProportionalFonts");

    widget1.setFontFilters (QFontComboBox::AllFonts);
    widget2.setFontFilters (QFontComboBox::ScalableFonts);
    widget3.setFontFilters (QFontComboBox::NonScalableFonts);
    widget4.setFontFilters (QFontComboBox::MonospacedFonts);
    widget5.setFontFilters (QFontComboBox::ProportionalFonts);

    widget1.setCurrentIndex (0);
    widget2.setCurrentIndex (0);
    widget3.setCurrentIndex (0);
    widget4.setCurrentIndex (0);
    widget5.setCurrentIndex (0);

    label1.setAlignment (Qt::AlignCenter);
    label2.setAlignment (Qt::AlignCenter);
    label3.setAlignment (Qt::AlignCenter);
    label4.setAlignment (Qt::AlignCenter);
    label5.setAlignment (Qt::AlignCenter);

    frame1.setFrameShape (QFrame::Panel);
    frame2.setFrameShape (QFrame::Panel);
    frame3.setFrameShape (QFrame::Panel);
    frame4.setFrameShape (QFrame::Panel);
    frame5.setFrameShape (QFrame::Panel);

    QVBoxLayout *V1 = new QVBoxLayout(&frame1);
    QVBoxLayout *V2 = new QVBoxLayout(&frame2);
    QVBoxLayout *V3 = new QVBoxLayout(&frame3);
    QVBoxLayout *V4 = new QVBoxLayout(&frame4);
    QVBoxLayout *V5 = new QVBoxLayout(&frame5);

    V1->addWidget (&label1);
    V1->addWidget (&widget1);
    V2->addWidget (&label2);
    V2->addWidget (&widget2);
    V3->addWidget (&label3);
    V3->addWidget (&widget3);
    V4->addWidget (&label4);
    V4->addWidget (&widget4);
    V5->addWidget (&label5);
    V5->addWidget (&widget5);

    // 佈局加入,此時部件的父類是mainLayout
    mainLayout.addWidget (&frame1,0,0);
    mainLayout.addWidget (&frame2,0,1);
    mainLayout.addWidget (&frame3,0,2);
    mainLayout.addWidget (&frame4,1,0);
    mainLayout.addWidget (&frame5,1,1);

    w.show ();
    app.exec();
    return 0;
}