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

qt-Quick笔记之Dark Mode And Light Mode In Application

qt-Quick笔记之Dark Mode And Light Mode In Application

code review!

文章目录

  • qt-Quick笔记之Dark Mode And Light Mode In Application
    • 1.运行
    • 2.目录结构
    • 3.main.qml
    • 4.main.cpp
    • 5.main.pro
    • 6.main.qrc

本例修改自视频教程:Qt QML | 🌙 Dark Mode And ☀️ Light Mode In Application
链接:https://www.youtube.com/watch?v=O-UoB62uxlA

1.运行

在这里插入图片描述

2.目录结构

.
├── main.cpp
├── main.qml
├── main.qrc
└── test3.pro

1 directory, 4 files

3.main.qml

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

Window {
    id: mainWindow
    width: 640
    height: 480
    title: "DarkMode And LightMode"
    color: appTheme.backgroundColor
    visible: true

    QtObject {
        id: appTheme
        property color backgroundColor: "#FFFFFF"
        property color textcolor: "#2f3640"
        property color buttontextcolor: "#FFFFFF"
        property color buttonbackgroundcolor: "#2f3640"

        function setLightTheme() {
            backgroundColor = "#FFFFFF"
            textcolor = "#2f3640"
            buttontextcolor = "#FFFFFF"
            buttonbackgroundcolor = "#2f3640"
        }

        function setDarkTheme() {
            backgroundColor = "#2f3640"
            textcolor = "#FFFFFF"
            buttontextcolor = "#2f3640"
            buttonbackgroundcolor = "#FFFFFF"
        }
    }

    ColumnLayout {
        anchors.centerIn: parent

        Text {
            Layout.preferredWidth: 200
            Layout.preferredHeight: 100
            Layout.alignment: Qt.AlignHCenter
            id: myText
            text: qsTr("Qt With Ketan")
            color: appTheme.textcolor
            font.pointSize: 20
        }

        Button {
            Layout.preferredWidth: 200
            Layout.preferredHeight: 100
            Layout.alignment: Qt.AlignHCenter
            id: myButton
            Text {
                text: "Qt With Ketan"
                color: appTheme.buttontextcolor
                anchors.fill: parent
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
            }
            background: Rectangle {
                color: appTheme.buttonbackgroundcolor
                radius: 20
            }
        }
    }

    Switch {
        id: themeSwitch
        text: "Light Mode"
        anchors.top: parent.top
        anchors.horizontalCenter: parent.horizontalCenter
        checked: false

        contentItem: Text {
            text: themeSwitch.checked ? "Dark Mode" : "Light Mode"
            color: appTheme.textcolor
            verticalAlignment: Text.AlignVCenter
            leftPadding: themeSwitch.indicator.width + themeSwitch.spacing
            font.pointSize: 15
        }

        onCheckedChanged: {
            if (checked) {
                appTheme.setDarkTheme()
            } else {
                appTheme.setLightTheme()
            }
        }
    }

    Component.onCompleted: appTheme.setLightTheme()
}

4.main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

5.main.pro

QT += quick

SOURCES += \
        main.cpp

resources.files = main.qml 
resources.prefix = /$${TARGET}
RESOURCES += main.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

6.main.qrc

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
    </qresource>
</RCC>

http://www.kler.cn/a/532064.html

相关文章:

  • ESLint
  • Java设计模式:行为型模式→状态模式
  • AMD模块
  • 零基础学习书生.浦语大模型-入门岛
  • Vue3的el-table-column下拉输入实时查询API数据选择的实现方法
  • 【leetcode练习·二叉树拓展】归并排序详解及应用
  • 应对现代电子商务的网络威胁—全面安全战略
  • (脚本学习)BUU18 [CISCN2019 华北赛区 Day2 Web1]Hack World1
  • 自制小动画
  • 基于开源2 + 1链动模式AI智能名片S2B2C商城小程序的内容创作与传播效能探究
  • ubuntu 网络管理--wpa_supplicant、udhcpc
  • Block Blaster Online:免费解谜游戏的乐趣
  • 如何不更新application.yml而更新spring的配置
  • 解读“大语言模型(LLM)安全性测评基准”
  • 蓝桥杯备考:高精度算法之乘法
  • Maven 概述与安装配置
  • 网络安全学习 day4
  • 物业管理平台系统促进智能社区管理与服务模式的创新与发展
  • 站在JavaScript的视角去看,HTML的DOM和GLTF的Json数据。
  • < 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析
  • 深度学习篇---深度学习框架图像预处理各部分组件
  • Love Tester:探索爱情的深度与维度
  • [特殊字符]const在函数前后的作用详解(附经典案例)
  • OSPF基础2
  • Linux系统管理
  • C++效率掌握之STL库:string函数全解