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

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>

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值