当前位置: 首页 > news >正文

QML FontDialog:使用FontDialog实现字体选择功能

目录

    • 引言
    • 相关阅读
      • FontDialog基本介绍
      • 字体属性
    • 实例演示
      • 项目结构
      • 代码实现
        • Main.qml
        • main.cpp
      • 代码解析
      • 运行效果
    • 总结

引言

在桌面应用程序开发中,字体选择是一个常见的需求。Qt Quick提供了FontDialog组件来实现这一功能。本文将介绍如何在Qt Quick应用程序中使用FontDialog组件来实现字体的选择和预览功能。

相关阅读

FontDialog QML Type


FontDialog基本介绍

FontDialog是Qt Quick Dialogs模块提供的一个对话框组件,用于选择字体。以下是其主要属性和方法:

属性/方法类型说明
currentFontfont当前选中的字体
titlestring对话框标题
fontfont选中的字体(只读)
accepted()signal用户接受选择时触发的信号
rejected()signal用户取消选择时触发的信号
open()method打开字体对话框
close()method关闭字体对话框

字体属性

Qt中的字体对象包含以下主要属性:

属性类型说明
familystring字体族名称
pointSizereal字体大小(点数)
boldbool是否加粗
italicbool是否斜体
underlinebool是否下划线

实例演示

项目结构

qml_fontdialog/
├── CMakeLists.txt
├── main.cpp
└── Main.qml

代码实现

Main.qml
import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Basic
import QtQuick.DialogsApplicationWindow {visible: truewidth: 800height: 600title: "文本编辑器"property font editorFont: Qt.font({family: "Arial",pointSize: 12})Column {anchors.fill: parentanchors.margins: 10spacing: 10ToolBar {width: parent.widthRow {spacing: 5Button {text: "字体"onClicked: fontDialog.open()}Button {text: "加粗"checkable: truechecked: editorFont.boldonClicked: editorFont.bold = checked}Button {text: "斜体"checkable: truechecked: editorFont.italiconClicked: editorFont.italic = checked}Button {text: "下划线"checkable: truechecked: editorFont.underlineonClicked: editorFont.underline = checked}}}TextArea {id: textEditorwidth: parent.widthheight: parent.height - 50text: "在这里输入文本..."font: editorFontwrapMode: TextEdit.Wrap}}FontDialog {id: fontDialogtitle: "选择编辑器字体"currentFont: editorFontonAccepted: editorFont = selectedFont}
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQuickControls2/QQuickStyle>int main(int argc, char *argv[])
{QGuiApplication app(argc, argv);QQmlApplicationEngine engine;QObject::connect(&engine,&QQmlApplicationEngine::objectCreationFailed,&app,[]() { QCoreApplication::exit(-1); },Qt::QueuedConnection);engine.loadFromModule("qml_fontdialog", "Main");return app.exec();
}

代码解析

界面布局

  • 使用ApplicationWindow作为主窗口
  • 采用Column布局,包含工具栏和文本编辑区
  • 工具栏使用Row布局放置按钮

字体属性

  • 定义editorFont属性存储当前字体设置
  • 初始字体设置为Arial,12点大小

功能按钮

  • 字体选择按钮:打开FontDialog
  • 加粗按钮:切换字体加粗状态
  • 斜体按钮:切换字体斜体状态
  • 下划线按钮:切换字体下划线状态

字体对话框

  • 使用FontDialog组件实现字体选择
  • currentFont绑定到editorFont
  • 通过onAccepted信号更新编辑器字体

如果遇到报错:

qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/qml/FontDialogContent.qml:223:16: QML Label: The current style does not support customization of this control (property: “label” item: Label_QMLTYPE_7(0x1c2501ed580, parent=0x0, geometry=0,0 0x0 ?)). Please customize a non-native style (such as Basic, Fusion, Material, etc). For more information, see: https://doc.qt.io/qt-6/qtquickcontrols2-customize.html#customization-reference

解决方法:

在main.cpp中,添加 QQuickStyle::setStyle(“Basic”);
在CMake脚本中添加 find_package(Qt6 REQUIRED COMPONENTS Quick QuickControls2)


运行效果

FontDialog

总结

本文介绍了如何在Qt Quick应用程序中实现字体选择功能。通过使用FontDialog组件可以方便地实现字体的选择和预览。示例程序提供了基本的文本编辑功能,包括字体选择、加粗、斜体和下划线等样式设置。这些功能的实现展示了Qt Quick组件的灵活性和易用性。

项目源码下载地址:Gitcode -> QML FontDialog

Gitcode

相关文章:

  • 如何Ubuntu 22.04.5 LTS 64 位 操作系统部署运行SLAM3! 详细流程
  • SAP获利分析KEA0-值字段无法被分配,原因既然是。。
  • Node.js技术原理分析系列8——将Node.js内置模块外置
  • 机器学习超参数优化全解析
  • 一洽智能硬件行业解决方案探索与实践
  • 德施曼重磅发布五大突破性技术及多款重磅新品,开启AI智能管家时代
  • 2025年五大ETL数据集成工具推荐
  • mcpo的简单使用
  • .NET仓储层在 using 块中创建 SqlSugarClient 的风险
  • 射频系统级芯片集成技术研究
  • echarts模板化开发,简易版配置大屏组件-根据配置文件输出图形和模板(vue2+echarts5.0)
  • Vue 3 Watch 监听 Props 的踩坑记录
  • Git常用操作命令
  • Qt 下载的地址集合
  • 【Maven】配置文件
  • audio 核心服务AudioPolicyService 和AudioFlinger启动流程
  • jsconfig.json文件的作用
  • 【SAP-CO】生产的成本流转和成本分析
  • Spark-Streaming
  • 【深度学习新浪潮】新视角生成的研究进展调研报告(2025年4月)
  • 马上评丨冒名顶替上中专,为何一瞒就是30多年?
  • 马上评|治理计量不准确收费不规范,水电气要有明白账
  • 视频·世界读书日|林乾:碎片化阅读或影视综艺≠知识
  • 话剧《门第》将开启全国巡演:聚焦牺牲、爱与付出
  • 动力电池、风光电设备退役潮来袭,国家队即将推出“再生计划”
  • AI换脸侵权案入选最高法典型案例:明晰人工智能使用边界