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>
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;
}