QT_QFontDialog类字体对话框

文章目录

QT_QFontDialog类字体对话框

QFontDialog 是 Qt 框架中用于让用户选择字体(包括字体族、大小、样式等)的标准对话框组件,继承自 QDialog,属于 Qt Widgets 模块。

功能与使用方式

静态方法快速调用

最常用的是 QFontDialog::getFont(),它会弹出一个模态对话框,用户选择后返回一个 QFont 对象和一个布尔值(表示是否点击"确定")。

实例化自定义对话框

也可以创建 QFontDialog 对象,通过 exec() 或 open() 显示,并连接 currentFontChanged 信号实现实时预览。

支持选项配置

可通过 FontDialogOption 枚举控制对话框行为,例如:

  • DontUseNativeDialog:强制使用 Qt 自绘界面而非系统原生对话框。
  • NoButtons:隐藏"确定"和"取消"按钮,适合嵌入自定义界面。
  • ScalableFonts:仅显示可缩放字体。

代码示例

cpp 复制代码
#include <QFontDialog>
#include <QFont>

bool ok;
QFont font = QFontDialog::getFont(&ok, QFont("Arial", 12), this, "选择字体");
if (ok) {
    // 用户点击了"确定",font 包含所选字体
    myLabel->setFont(font);
} else {
    // 用户点击了"取消"
}

使用案例

dialog.h

cpp 复制代码
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QPushButton>
#include <QFontDialog>
#include <QGridLayout>
#include <QLineEdit>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
private:
    QGridLayout *glayout;
    QPushButton *fontbutton;
    QLineEdit *fontlineedit;
private slots:
    void displayFontFunc();
};
#endif // DIALOG_H

dialog.cpp

cpp 复制代码
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(u8"字体对话框测试");
    glayout = new QGridLayout(this);

    fontbutton = new QPushButton(u8"调用字体对话框");

    fontlineedit = new QLineEdit;

    fontlineedit->setText(u8"天王盖地虎");

    glayout->addWidget(fontbutton, 0, 0);
    glayout->addWidget(fontlineedit, 0, 1);
    connect(fontbutton, SIGNAL(clicked()), this, SLOT(displayFontFunc()));

}
Dialog::~Dialog()
{
}

void Dialog::displayFontFunc(){
    bool isbool;
    QFont font = QFontDialog::getFont(&isbool);

    if (isbool) {
        fontlineedit->setFont(font);
    }
}

效果:

相关推荐
圣光SG1 小时前
Java操作题练习(七)
java·开发语言·算法
麻瓜老宋2 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十三步,多行输入、进制输出、错误恢复、常量折叠、配置加载等
c语言·开发语言·atomcode
q567315233 小时前
企业级 HTTP 代理采购选型:技术评估清单 15 项
开发语言·网络·爬虫·网络协议·http·隧道ip·代理ip
天天进步20153 小时前
Python全栈项目--智能办公自动化系统
开发语言·python
cm04Z9c914 小时前
C#摸鱼实录——IoC与DI案例详解
开发语言·c#
long3165 小时前
Java 新手入门与实战开发指南
java·开发语言
摩西蒙5 小时前
计算机网络
开发语言·计算机网络·php
山峰哥5 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
花生了什么事o6 小时前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言