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

效果:

相关推荐
2501_941875282 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj2 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
努力的lpp4 小时前
php反序列化一(大白话版)
开发语言·web安全·php·ctf·反序列化
菜鸟~noob2334 小时前
【电子战】第03篇:CFAR(恒虚警)处理【含matlab代码】
开发语言·matlab
泡海椒5 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb5 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
Keven_116 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
mengzhi啊6 小时前
QPluginLoader 动态 DLL 插件版,支持插件之间通信,广播。请求和应答
c++·qt
脉动数据行情17 小时前
C# 实现德指 DAX 期货 WebSocket 实时行情监听
开发语言·websocket·c#
大圣编蚕7 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法