qt QFontDialog详解

news/2024/11/6 12:07:48/
1、概述

QFontDialog 是 Qt 框架中的一个对话框类,用于选择字体。它提供了一个可视化的界面,允许用户选择所需的字体以及相关的属性,如字体样式、大小、粗细等。用户可以通过对话框中的选项进行选择,并实时预览所选字体的效果。QFontDialog 继承自 QDialog,是创建字体选择对话框的标准方式。

2、重要方法
  • QFontDialog(QWidget *parent = nullptr): 构造函数,创建一个新的 QFontDialog 对象。parent 是可选的父窗口参数。
  • static QFont getFont(bool *ok = nullptr, QWidget *parent = nullptr): 静态函数,显示字体对话框并返回用户选择的字体。如果 ok 不为 nullptr,则当用户点击“确定”时,*ok 将被设置为 true,否则为 falseparent 是可选的父窗口参数。
  • void setFont(const QFont &font): 设置字体对话框中默认显示的字体。
  • void setOption(QFontDialog::FontDialogOption option, bool on = true): 设置字体对话框的选项。option 是要设置的选项,on 指定该选项是否启用。

3、重要信号
  • currentFontChanged(const QFont &font): 当字体对话框中当前选择的字体发生变化时发射此信号。font 是新的字体。
  • fontSelected(const QFont &font): 当用户在字体对话框中选择字体并点击“确定”时发射此信号。font 是用户选择的字体。
#include <QApplication>  
#include <QWidget>  
#include <QLabel>  
#include <QPushButton>  
#include <QVBoxLayout>  
#include <QFontDialog>  
#include <QDebug>  class FontDialogDemo : public QWidget {  Q_OBJECT  public:  FontDialogDemo(QWidget *parent = nullptr) : QWidget(parent) {  QVBoxLayout *layout = new QVBoxLayout(this);  QLabel *label = new QLabel("请选择一个字体:", this);  layout->addWidget(label);  QPushButton *button = new QPushButton("选择字体", this);  layout->addWidget(button);  connect(button, &QPushButton::clicked, this, &FontDialogDemo::onFontButtonClicked);  this->labelToUpdate = new QLabel("Font Dialog 例子", this);  layout->addWidget(this->labelToUpdate);  this->setLayout(layout);  this->setWindowTitle("Font Dialog 例子");  }  private slots:  void onFontButtonClicked() {  bool ok;  QFont font = QFontDialog::getFont(&ok, this);  if (ok) {  this->labelToUpdate->setFont(font);  qDebug() << "选择的字体:" << font.family();  qDebug() << "字体大小:" << font.pointSize();  qDebug() << "字体是否加粗:" << font.bold();  qDebug() << "字体是否是斜体:" << font.italic();  }  }  private:  QLabel *labelToUpdate;  
};  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  FontDialogDemo demo;  demo.show();  return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.ppmy.cn/news/1544812.html

相关文章

项目模块十二:TcpServer模块

一、模块设计思路 1、目的 对所有模块整合&#xff0c;实现一个服务器模块供外部快速搭建服务器。 2、管理 监听套接字 主 Reactor&#xff0c;创建 EventLoop _baseloop 对象&#xff0c;进行对监听套接字的管理 哈希表管理所有新连接的 Channel 创建线程池进行连接的事…

python类方法、实例方法以及相互关系

在Python中&#xff0c;类方法&#xff08;class method&#xff09;是一种特殊类型的方法&#xff0c;它使用类本身作为第一个参数&#xff0c;而不是实例对象。类方法通常用于定义与类本身相关但不需要访问实例属性的操作。类方法的第一个参数通常命名为cls&#xff0c;以区别…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十九集:制作过场Cutscene系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作过场Cutscene系统 1.制作基本的视频过场和动画过场2.制作决定过场系统的播放顺序Sequence以及切换场景以后的逻辑处理二、制作跳过过场Cutscene的MenuS…

Webserver(3.3)生产者消费者模型

目录 生产者消费者简单模型条件变量信号变量 生产者消费者简单模型 //生产者消费者模型#include <stdio.h> #include<pthread.h> #include<stdlib.h> #include<unistd.h>struct Node{int num;struct Node * next; }; //头结点 struct Node * headNULL…

unreal engine5动画重定向

UE5系列文章目录 文章目录 UE5系列文章目录前言一、下载动画资源二、创建IK Rig&#xff08;IK绑定&#xff09; 前言 在Unreal Engine 5.4中&#xff0c;动画重定向&#xff08;Animation Retargeting&#xff09;和动作匹配&#xff08;Motion Matching&#xff09;是两种不…

PL端:LED闪烁

实验环境 vivado2024.1 实验任务 LED闪烁 引脚关系 硬件配置 新建一个vivado实验 创建 Verilog HDL 文件点亮 LED 点击 Project Manager 下的 Add Sources 图标&#xff08;或者使用快捷键 AltA&#xff09; 编辑led.v module led(input sys_clk,input rst_n,outp…

C语言中如何实现动态内存分配

在C语言中&#xff0c;动态内存分配是通过标准库中的malloc、calloc和free函数实现的。这些函数允许程序在运行时请求内存&#xff0c;从而提供灵活性&#xff0c;尤其是在不知道所需内存大小的情况下。下面是对这三个函数的详细解释和使用示例。 1. malloc malloc&#xff0…

electron 中 ipcRenderer 作用

1. 理解 IPC&#xff08;进程间通信&#xff09;的背景 在 Electron 应用中&#xff0c;有主进程&#xff08;main process&#xff09;和渲染进程&#xff08;renderer process&#xff09;之分。 主进程&#xff1a;负责管理应用程序的生命周期、创建和管理窗口等核心任务。…