基本Widgets(20):【類】QFontComboBox [官翻]
技術標籤:Qt
文章目錄
QFontComboBox Class
QFontComboBox小部件是一個允許使用者選擇字體系列的組合框。
Header | #include < QFontComboBox > |
---|---|
qmake | QT += widgets |
Inherits | QComboBox |
Inherited By |
詳細說明
組合框中填充了按字母順序排列的字體系列名稱列表,如Arial、Helvetica和Times New Roman。儘可能使用實際字型顯示族名稱。對於諸如Symbol之類的字型,如果名稱不能在字型本身中表示,則會在族名稱旁邊顯示一個字型示例。
QFontComboBox通常用於工具欄,與用於控制字型大小的QComboBox和用於粗體和斜體的兩個QToolButtons一起使用。
當用戶選擇新字型時,除了currentIndexChanged() 之外,還會發出currentFontChanged() 訊號。
呼叫setWritingSystem() 告訴QFontComboBox只顯示支援給定書寫系統的字型,呼叫setFontFilters() 過濾掉某些型別的字型,例如不可縮放字型或等距字型。
See also QComboBox, QFont, QFontInfo, QFontMetrics, QFontDatabase, and Character Map Example.
公共型別
enum FontFilter
flags FontFilters
此列舉只能用於在字型組合框中顯示某些型別的字型。
Constant | Value | Description |
---|---|---|
AllFonts | 0 | 顯示所有字型 |
ScalableFonts | 0x1 | 顯示可縮放字型 |
NonScalableFonts | 0x2 | 顯示不可縮放字型 |
MonospacedFonts | 0x4 | 顯示等距字型 |
ProportionalFonts | 0x8 | 顯示比例字型 |
屬性
-
currentFont: QFont 當前選定的字型
Access functions:
- QFont currentFont() const
- void setCurrentFont(const QFont &f)
Notifier signal:
- void currentFontChanged(const QFont &font)
-
fontFilters: FontFilters 組合框的篩選器
預設情況下,列出所有字型。Access functions:
- QFontComboBox::FontFilters fontFilters() const
- void setFontFilters(QFontComboBox::FontFilters filters)
-
writingSystem: QFontDatabase::WritingSystem 用作組合框篩選器的寫入系統
如果指令碼是QFontDatabase::Any(預設值),則列出所有字型。Access functions:
- QFontDatabase::WritingSystem writingSystem() const
- void setWritingSystem(QFontDatabase::WritingSystem)
公共函式
構造和析構
- QFontComboBox(QWidget *parent = nullptr)
- virtual ~QFontComboBox()
屬性相關
- QFont currentFont() const
- void setCurrentFont(const QFont &f)
- QFontComboBox::FontFilters fontFilters() const
- void setFontFilters(QFontComboBox::FontFilters filters)
- QFontDatabase::WritingSystem writingSystem() const
- void setWritingSystem(QFontDatabase::WritingSystem)
重寫的公共函式
- virtual QSize sizeHint() const override
公共槽
- void setCurrentFont(const QFont &f) 屬性相關
訊號
- void currentFontChanged(const QFont &font)
重寫的受保護函式
- 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;
}