QML自定义的日历控件

2023-05-16

        QML中提供了日历的控件Calendar,但该控件为QtQuick.Controls 1中提供的控件,因此只能使用QtQuick.Controls.Styles的方式对该控件进行设置,效果如图:

        在Qt文档中关于日历Calendar的描述为:Calendar允许从天数网格中选择日期,类似于QCalendarWidget。日历上的日期可以用鼠标选择,也可以用键盘导航。CalendarStyle 可用于设置日历组件的样式,其样式组件区域为:

    property color backgroundColor: 设置日历整体背景颜色,可设置半透明效果
    property color backgroundBorderColor: 背景边框颜色
    property color navigationBarBackgroundColor: 导航栏背景颜色
    property color navigationBarTextColor: 导航栏字体颜色
    property color dayOfWeekBackgroundColor: 星期显示栏背景颜色
    property color dayOfWeekTextColor:星期显示栏字体颜色
    property color daySelectedBackgroundColor: 选中的日期的背景颜色
    property color dayInvalidBackgroundColor:  非本月日期的背景颜色
    property color dayTextColor: 本月日期字体颜色
    property color gridLineColor: 日期框颜色

         大家在使用过程中可结合我QML中提供的属性和文档进行自定义日历样式和添加修改属性,QML源码:

import QtQml 2.7
import QtQuick 2.7
import QtQuick.Controls 1.6
import QtQuick.Controls.Styles 1.4

Calendar {
    id:calendar
    width: 260
    height: 260
    frameVisible:false
    property color backgroundColor: "#d90b394e"
    property color backgroundBorderColor: "#e6115777"
    property color navigationBarBackgroundColor: "#99b3b3b3"
    property color navigationBarTextColor: "#38d3dc"
    property color dayOfWeekBackgroundColor: "#4d2d2f39"
    property color dayOfWeekTextColor: "#38d3dc"
    property color daySelectedBackgroundColor: "#6638d3dc"
    property color dayInvalidBackgroundColor: "#4d5c5952"
    property color dayTextColor: "#38d3dc"
    property color gridLineColor: "#555"

    signal dateChanged(var dateStr)

    onClicked: {
        var s = datamanager.dateToString(date)
        dateChanged(s)
    }
    style: CalendarStyle {
             gridVisible: false
             background: Rectangle{
                 color: calendar.backgroundColor
                 border.color: calendar.backgroundBorderColor
             }
             navigationBar:Rectangle{
                 height: 30
                 color: calendar.navigationBarColor
                 Label {
                     text: styleData.title
                     anchors.centerIn: parent
                     color: calendar.titleColor
                     font.pixelSize: 13
                     font.family: "微软雅黑"
                     font.bold: true
                 }
                 Label {
                     anchors.left: parent.left
                     width: 30
                     height: 30
                     text:"<"
                     font.pixelSize: 16
                     horizontalAlignment: Text.AlignHCenter
                     verticalAlignment: Text.AlignVCenter
                     font.family: "微软雅黑"
                     font.bold: true
                     color: "#cecece"
                     MouseArea{
                         anchors.fill: parent
                         onClicked: calendar.showPreviousMonth()
                     }
                 }
                 Label {
                     anchors.right: parent.right
                     width: 30
                     height: 30
                     text:">"
                     font.pixelSize: 16
                     horizontalAlignment: Text.AlignHCenter
                     verticalAlignment: Text.AlignVCenter
                     font.family: "微软雅黑"
                     font.bold: true
                     color: "#cecece"
                     MouseArea{
                         anchors.fill: parent
                         onClicked: calendar.showNextMonth()
                     }
                 }
             }

             dayOfWeekDelegate:Rectangle{
                 color: calendar.dayOfWeekBackgroundColor
                 height: 26
                 Label {
                     text: Qt.locale().dayName(styleData.dayOfWeek)
                     anchors.centerIn: parent
                     color: calendar.dayOfWeekTextColor
                     font.pixelSize: 9
                 }
             }

             dayDelegate: Rectangle {
                 color: styleData.selected ? calendar.daySelectedBackgroundColor :(styleData.visibleMonth && styleData.valid ? "#00000000" : calendar.dayInvalidBackgroundColor)
                 border.width: 0


                 Label {
                     text: styleData.date.getDate()
                     anchors.centerIn: parent
                     color: styleData.visibleMonth && styleData.valid ?  calendar.dayTextColor: "#888"
                 }

                 Rectangle {
                     width: parent.width
                     height: 1
                     color: calendar.gridLineColor
                     anchors.bottom: parent.bottom
                 }

                 Rectangle {
                     width: 1
                     height: parent.height
                     color: calendar.gridLineColor
                     anchors.right: parent.right
                 }
             }
         }

  }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QML自定义的日历控件 的相关文章

  • QML - MouseArea/MouseEvent 问题

    下面的代码生成一个白色矩形 其中包含一个红色矩形和一个灰色矩形 每个矩形都有一个关联的 MouseArea 当鼠标在灰色矩形内单击时 灰色矩形会变成蓝色 当鼠标光标进入红色矩形内部时 红色矩形会打印一条控制台消息 当发出释放信号时 会打印另
  • 安全删除 StackView 转换中使用的 QML 组件

    Overview 我的问题涉及一个人的一生QObject由 制作QQmlComponent create http doc qt io qt 5 qqmlcomponent html create 1 返回的对象create 是一个实例化Q
  • 为 QML TreeView 创建模型

    我正在尝试使用 QML TreeView 模型 Qt 的示例不包括如何创建模型 我读了这个post https stackoverflow com questions 40433038 qml treeview not updating a
  • 在 Windows 上部署 QML 应用程序的正确方法

    最近 我需要为我的 Qt QML 应用程序创建一个部署包 这个过程非常繁琐 因为您需要手动查找并复制依赖项 正如 官方 中所述Qt Wiki https wiki qt io Deploy an Application on Windows
  • 带有 QML 的 FbxGeometryLoader

    我想将 fbx 文件导入到我的Scene3D https doc qt io qt 5 11 qml qtdatavisualization scene3d html 通过QMesh https doc qt io qt 5 11 qt3d
  • 没有安装 qmlviewer

    我已经安装了 Qt SDK 5 0 0 beta 2 和 Qt Creator 2 6 0 它检测到该包 但给出警告 未安装 qmlviewer 我找了一下 在SDK的bin文件夹下 我能做些什么 我使用 ubuntu 12 04 并将 S
  • 如何从js文件中包含qml文件

    我收集一些例子 https github com drzhbe QmlTxt blob master Import md of importQML 中的声明 但还缺少一个 从 js 文件导入 qml 文件 文档says http doc q
  • 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?

    我的所有对话框都出现在屏幕的左上角而不是中心 让对话框自动正确放置的最佳方法是什么 import QtQuick 2 7 import QtQuick Controls 2 2 ApplicationWindow id mainWindow
  • 设置Loader项目属性

    In the context https stackoverflow com questions 33513546 delegate folderlistmodel in tableview文件管理器 我有一个TableView组件保存在文
  • Qt、QML 和 Windows 8 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直对Qt框架引入的QML很好奇 但从未有机会使用它 但现在随着 Windows 8 的到来 基于旧式小部件的界面将变得过时 只是我
  • 如何在 QML 中使用 Font Awesome

    有谁知道如何在 QML 中使用 Font Awesome 吗 我找不到任何文档或任何信息如何在 QML 中使用 Font Awesome 我喜欢做的是使用fontello http fontello com 创建最小的图标集 而不是从 Fo
  • 使用 KDE Kirigami 时未找到 QML 模块

    所以我决定在我的应用程序中使用 KDE Kirigami UI 框架 所以我按照说明进行操作here https api kde org frameworks kirigami html index html 我将存储库克隆到我的应用程序目
  • Qt QML ComboBox 覆盖滚轮事件

    有没有办法覆盖 ComboBox MouseArea 以忽略滚轮事件而不是更改当前索引 ComboBox 本身没有选项可以更改滚轮焦点行为 到目前为止 我尝试使用如下代码覆盖 CB MouseArea 的 onWheel ComboBox
  • 无法锚定到不是父级或同级 QML QtQuick 的项目

    我正在使用 QML 开发 python 桌面应用程序 我的 QML 文件中有这个 SplitView anchors fill parent orientation Qt Horizontal Rectangle color 272822
  • PySide2/QML 填充 Gridview 模型/委托并为其设置动画

    我是 QML 的新手 正在寻求以下几点帮助 如何基于 TextField 输入 如 Regex 通过 PySide2 过滤 Gridview 模型中的 QAbstractListModel 数据 标题 如何在鼠标悬停时为 Gridview
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • Qml 模块未找到 CPP 类注册与新的 QML_ELEMENT r

    我尝试使用 Qt5 15 0 和新宏 QML ELEMENT 在 QML 中注册我的自定义 CPP 类 但找不到该模块 Qt Creater 帮助文件描述了 QML ELEMENT 的步骤 我也检查了 Qt 手册 但没有幸福的结局 http
  • 如何访问Loader的sourceComponent中的QML对象?

    我可能需要读取或写入的一些属性Loader s sourceComponent来自一些外部函数 访问该房产的方式是什么x里面的对象的Loader s sourceComponent import QtQuick 2 0 Item width
  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • 为什么anchors.centerIn不适用于Column元素?

    我有这段 QML 代码 Column spacing units gu 2 anchors fill parent centerIn parent Row spacing units gu 4 Row spacing units gu 4

随机推荐

  • Qt Creator 无法编辑Qml界面,报错:“Qt Quick emulation layer crashed”

    今日在Qml界面编辑中 xff0c 突然无法使用设计师编辑器 xff0c 并报错如图 xff1a 代码定位也无法定位到错误的位置处 xff0c 通过注释代码的方式检查后 xff0c 发现错误产生原因是某个部件设置了两个状态State xff
  • QML中使用QPen设置组件边框(以CandlestickSeries为例)

    QML中提供了很多组件是由C 43 43 中绘制而注册到QML中使用的 xff0c 这些组件采用QPen绘制组件边框 xff0c 这样的组件均可使用返回QPen的方法设置边框样式 例如CandlestickSeries就提供了数据展示的蜡烛
  • Qt QML 自绘GPS方位校北仪控件

    校北仪用于显示不同设备与参照方位之间的误差夹角 xff0c 如果仅仅使用柱状图显示多个不同设备误差的数值 xff0c 数据不够直观表示 xff0c 因此自己画一个 xff0c 效果如图 xff1a 该控件使用QQuickPaintedIte
  • QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

    常用的地图种类分为交通图 xff0c 地形图 xff0c 卫星图等等 xff0c 在QML的Map xff08 以OSM地图为例 xff09 中提供activeMapType属性用于读取当前显示的地图类型 xff08 注意 xff1a 该属
  • QML 地图修改插件源码(四),Map根据目录作为索引加载地图瓦片

    QML中的地图 以OSM为例 在使用过程中会发现当地图层数很多时 xff0c 特别是如果使用离线地图且地图层级较多时地图会变得很卡 xff08 在线地图加载的层级数多且不清除缓存时也会卡 xff09 xff0c 原因在于QML地图插件对地图
  • Qt Quick 3D中将3D场景(如.obj)转换为.mesh

    Qt 5 15以后提供了Qt Quick 3D的新模块 xff0c 该模块可使用可视化的方式即可进行3D模型的显示 xff0c 并且相较于Qt 3D来说 xff0c 该模块的API更为高级 xff0c 使用者不需要自己设计底层的细节 该模块
  • Qt Quick 3D系列(一):加载3d模型

    如果我们想在QML中使用3D且你之前没有三维程序开发的基础 xff0c 使用Qt Quick 3D是个不错的选择 xff0c 下面我介绍如何使用Qt Quick 3D加载3d模型 注意 xff1a Qt Quick 3D从Qt 5 15之后
  • boa常见错误整理

    错误1 xff1a bison y d boa grammar y gcc g O2 pipe Wall I c o y tab o y tab c y tab c In function yyparse y tab c 1295 warn
  • Qt Quick 3D系列(二):鼠标控制3D模型旋转缩放

    上一篇文章Qt Quick 3D系列 xff08 一 xff09 xff1a 加载3d模型我们讲述了如何在Qt Quick 3D中显示一个3D模型 xff0c 那么显示了3D模型后如何使用鼠标进行旋转呢 xff1f 在Qt 3D中提供了Or
  • Qt Quick 3D系列(三):设置三维模型的金属光泽材质

    前面的博客中介绍了如何在Qt Quick 3D中加载三维模型 xff0c 下面介绍如何设置三维模型的材质 xff0c 例如下图模型 我需要设置为金属材质时 xff0c 设置该Model的materials为PrincipledMateria
  • Qt Quick 3D系列(四):为三维模型添加动画效果

    Qt Quick 3D旨在让那些熟悉QML开发的人能够使用非常少的学习成本实现3D开发 xff0c 因此对于三维模型动画没有类似与Qt 3D中有个专门的Qt3DAnimation来控制动画效果 xff0c 而是直接使用QML中的Animat
  • Qt Quick 3D系列(五):三维模型展示示例

    为了展示一个好看的3D模型 xff0c 需要对模型设置背景 xff0c 设置三维材质 xff0c 设置周围光线 xff0c 设置模型阴影等等 下面示例展示了一个比较好看的三维模型效果 xff0c 大家可以先在C4D等调整好模型效果 xff0
  • QML 地图可拖拽位置标签组件

    在地图上显示位置信息时 xff0c 有时候需要同时显示该位置的详细信息 该组件可在地图上显示一个连接到地图地理位置的标签框 xff0c 该标签框可点击进行拖拽 在地理位置改变 地图缩放 地图平移时 xff0c 该标签框的相对位置保持不变 x
  • 使用QQuaternion对Qt Data Visualization中模型进行旋转

    在Data Visualization中 xff0c 三维显示的OBJ需要旋转时使用rotation属性 xff0c 但是该属性传入的值是一个四元数QQuaternion xff0c 直接赋值四元数很复杂 xff0c 因此使用转化的方式获得
  • QML 可拖拽边框和顶点调整大小组件(新增对主窗口支持)

    QML项目开发过程中 xff0c 有时候需要对控件大小和位置 进行人为调整 xff0c 因此设计该组件 该组件鼠标置于边框和顶点位置时鼠标样式对应改变 xff0c 拖动边框可修改该方向组件大小 xff0c 拖动顶点可修改组件处横纵向组件大小
  • QML 地图修改插件源码(五),Map添加自定义地图类型,并动态修改地图类型

    QML的地图Map中提供了属性activeMapType MapType用于设置当前地图的类型 xff0c 以OSM地图插件为例 xff0c OSM地图提供了多种地图类型 xff0c 下面介绍如何修改OSM插件的源码添加需要的地图类型 xf
  • Qt使用QQuaternion对空间矢量QVector3D进行旋转

    空间中的QVector3D既可以代表空间中的点位置 xff0c 也可以表示空间矢量 为什么要对空间矢量进行旋转呢 xff0c 比如有一个空间矢量在空间中代表了镜头前进的方向 xff08 即第一人称模式 xff09 xff0c 初始时该矢量指
  • QML实现双屏显示

    QML程序中需要分别在主屏幕和分屏幕上显示不同的界面内容 xff0c 但又为了不同界面间能够进行数据交互 xff0c 因此使用如下方法实现双屏显示 xff0c 即由主窗口生成第二个窗口 xff0c 将该窗口移动到第二个屏幕上 xff0c 实
  • ubuntu设置默认内核启动的方法

    本文介绍ubuntu设置默认内核启动的方法 参考如下图 xff0c 修改grub文件 xff1a 修改后 xff0c 执行 xff1a sudo update grub amp amp reboot
  • QML自定义的日历控件

    QML中提供了日历的控件Calendar xff0c 但该控件为QtQuick Controls 1中提供的控件 xff0c 因此只能使用QtQuick Controls Styles的方式对该控件进行设置 xff0c 效果如图 xff1a