QML学习笔记(四十一)QML的ColorDialog和FontDialog

前言

本节将了解两个弹窗,分别是颜色选择和字体选择。

它们的使用都很简单,直接看代码吧。

一、代码演示

cpp 复制代码
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Dialogs 1.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Row {
        anchors.centerIn: parent
        spacing: 20

        /* 1. 颜色按钮 */
        Rectangle {
            id: colorRect
            width: 60; height: 40
            color: "steelblue"
            border.width: 1
            MouseArea {
                anchors.fill: parent
                onClicked: colorDlg.open()
            }
        }

        /* 2. 字体标签 */
        Label {
            id: fontLbl
            text: "Hello Qt"
            font.pixelSize: 16
            MouseArea {
                anchors.fill: parent
                onClicked: fontDlg.open()
            }
        }
    }

    /* 3. 颜色对话框 */
    ColorDialog {
        id: colorDlg
        color: colorRect.color
        onAccepted: colorRect.color = color
    }

    /* 4. 字体对话框 */
    FontDialog {
        id: fontDlg
        font: fontLbl.font
        onAccepted: fontLbl.font = font
    }

}


我们可以点击颜色矩形和文本标签,通过弹窗来修改颜色和字体。

二、总结

可以看到,其实代码使用上是非常简单的。颜色选择框和字体选择框我曾经在绘图软件上使用过,还算是比较常用的。

它的样式你可能会觉得丑丑的,但它更多是贴合系统平台的原生弹窗,你如果在不同平台下调用这些弹窗,可能风格往往不一样。

因为这种弹窗的效果不固定,你感兴趣的话大可以自己重新实现一个,就是比较麻烦,实际开发中也很少会有这样的资源和人力物力去推动这件事情。

所以抱着能用就行的原则,大多也就直接选择了这种"系统"弹窗。不过值得注意的是,我们往往还要考虑一个翻译的问题,不然弹窗内部的提示文字全都是默认英文的。

如果是QtQuick.Dialogs 1.x的话,我们和QWidget一样直接走qm的翻译方式即可。

即直接加载qt_zh_CN.qm:

cpp 复制代码
QTranslator qtTr;
qtTr.load("qt_zh_CN",
          QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTr);      // 官方 qt 按钮翻译
相关推荐
代码山河5 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
sbjdhjd6 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
释厄6236 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
海绵宝宝的月光宝盒9 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
小嘉丶学长10 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
白山编程大哥10 小时前
接口幂等性是什么?如何设计?
笔记
ACP广源盛1392462567310 小时前
6 盘位存储扩展方案选型笔记:YLB3116 @ACP评估记录
笔记·硬件架构·硬件工程·国产芯片
小李不想当小白10 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
weixin_4481199413 小时前
Datawhale Jev Cookbook 202610 笔记3
笔记
姚瑞南13 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理