QFontDialog

QFontDialog类是QDialog的子类, 通过这个类我们可以得到一个进行字体属性设置的对话框窗口, 和前边介绍的对话框类一样, 我们只需要调用这个类的静态成员函数就可以得到想要的窗口了。

QFont字体类

关于字体的属性信息, 在QT框架中被封装到了一个叫QFont的类中

// 构造函数
  QFont::QFont();
  /*
  参数:
    - family: 本地字库中的字体名, 通过 office 等文件软件可以查看
    - pointSize: 字体的字号
    - weight: 字体的粗细, 有效范围为 0 ~ 99
    - italic: 字体是否倾斜显示, 默认不倾斜
  */
  QFont::QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false);
  
  // 设置字体
  void QFont::setFamily(const QString &family);
  // 根据字号设置字体大小
  void QFont::setPointSize(int pointSize);
  // 根据像素设置字体大小
  void QFont::setPixelSize(int pixelSize);
  // 设置字体的粗细程度, 有效范围: 0 ~ 99
  void QFont::setWeight(int weight);
  // 设置字体是否加粗显示
  void QFont::setBold(bool enable);
  // 设置字体是否要倾斜显示
  void QFont::setItalic(bool enable);
  
  // 获取字体相关属性(一般规律: 去掉设置函数的 set 就是获取相关属性对应的函数名)
  QString QFont::family() const;
  bool QFont::italic() const;
  int QFont::pixelSize() const;
  int QFont::pointSize() const;
  bool QFont::bold() const;
  int QFont::weight() const;

在这里插入图片描述
关于字体的粗细:
在这里插入图片描述

使用QFont类

如果一个QFont对象被创建, 并且进行了初始化, 我们可以将这个属性设置给某个窗口, 或者设置给当前应用程序对象。

// QWidget 类
// 得到当前窗口使用的字体
const QWidget::QFont& font() const;
// 给当前窗口设置字体, 只对当前窗口类生效
void QWidget::setFont(const QFont &);

// QApplication 类
// 得到当前应用程序对象使用的字体
[static] QFont QApplication::font();
// 给当前应用程序对象设置字体, 作用于当前应用程序的所有窗口
[static] void QApplication::setFont(const QFont &font, const char *className = nullptr);

QFontDialog类的静态API

/*
参数:
  - ok: 传出参数, 用于判断是否获得了有效字体信息, 指定一个布尔类型变量地址
  - initial: 字体对话框中默认选中并显示该字体信息, 用于对话框的初始化
  - parent: 字体对话框窗口的父对象
  - title: 字体对话框的窗口标题
  - options: 字体对话框选项, 使用默认属性即可, 一般不设置
*/
  [static] QFont QFontDialog::getFont(
		bool *ok, const QFont &initial, 
		QWidget *parent = nullptr, const QString &title = QString(), 
		QFontDialog::FontDialogOptions options = FontDialogOptions());
  
  [static] QFont QFontDialog::getFont(bool *ok, QWidget *parent = nullptr);

简单的使用

void MainWindow::on_b1_clicked()
{
    bool ok;
    QFont qf1;
    qDebug()<<"设置前的字体类型为:"<<ui->mylabel->font();
    //用户选择字体样式
    qf1 = QFontDialog::getFont(
            &ok, QFont("宋体",12,50,false),
            this, "选择字体样式"
            );
    qDebug()<<"是否获得有效的字体信息:"<<ok;
    qDebug()<<"用户选择的字体是:"<<qf1;
    //将字体样式设置到相应的文本中
    ui->mylabel->setFont(qf1);
    qDebug()<<"完成字体的设置,字体为:"<<ui->mylabel->font();

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于窗口的指定:

void MainWindow::on_b2_clicked()
{
    bool ok;
    QFont qf1;
    qDebug()<<"设置前的字体类型为:"<<ui->mylabel->font();
    //用户选择字体样式
    qf1 = QFontDialog::getFont(
            &ok, QFont("楷体",12,QFont::Light,false),
            this, "选择字体样式"
            );
    qDebug()<<"是否获得有效的字体信息:"<<ok;
    qDebug()<<"用户选择的字体是:"<<qf1;

    // 给当前窗口设置字体, 只对当前窗口类生效   void QWidget::setFont(const QFont &);
    ui->mylabel2->setFont(qf1);

    qDebug()<<"完成字体的设置,字体为:"<<ui->mylabel->font();
}

void MainWindow::on_b3_clicked()
{

    bool ok;
    QFont qf1;
    qDebug()<<"设置前的字体类型为:"<<ui->mylabel->font();
    //用户选择字体样式
    qf1 = QFontDialog::getFont(
            &ok, QFont("楷体",12,QFont::Light,false),
            this, "选择字体样式"
            );
    qDebug()<<"是否获得有效的字体信息:"<<ok;
    qDebug()<<"用户选择的字体是:"<<qf1;

    // 给当前应用程序对象设置字体, 作用于当前应用程序的所有窗口
    QApplication::setFont(qf1);

    qDebug()<<"完成字体的设置,字体为:"<<ui->mylabel->font();

}

QApplication::setFont(qf1) 不指定,默认为所有窗口
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值