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

QML学习笔记(五十二)QML与C++交互:数据转换——时间和日期

前言

接着上一节的,我们补充一下时间和日期的数据传递。
我将直接在上一节的工程添加代码,先附上链接:
QML学习笔记(五十一)QML与C++交互:数据转换——基本数据类型

一、代码测试

多余重复的部分就不说了,我们只说有变化的:

class CppClass : public QObject
{Q_OBJECTpublic:explicit CppClass(QObject *parent = nullptr);signals:// 时间和日期void sendDateTime(QDateTime datetimeparam);void sendTime( QTime timeparam);public slots:void cppSlot();// 时间和日期void timeSlot(QTime time);void dateTimeSlot(QDateTime datetime);};
void CppClass::cppSlot()
{qDebug()<<"cppSlot called";emit sendDateTime(QDateTime::currentDateTime());emit sendTime(QTime::currentTime());
}void CppClass::timeSlot(QTime time)
{qDebug()<< "Time from QML is :" << time;
}void CppClass::dateTimeSlot(QDateTime datetime)
{qDebug() << "DateTime from QML is :" << datetime;
}
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.12
import com.mycompany 1.0Window {visible: truewidth: 640height: 480title: qsTr("QmlBasicDataTypes")property string mValue:"Clicked %1 times, double is %2"property int clickCount:0CppClass{id: cppClassId// 日期和时间onSendDateTime:(datetimeparam) =>{console.log("Received datetime :"+ datetimeparam);//Extract infoconsole.log("Year :" + datetimeparam.getFullYear())console.log("...",datetimeparam.toGMTString())}onSendTime: (timeparam)=>{console.log("Received time :"+ timeparam);}}Button{id: buttonIdtext: "test"onClicked: {cppClassId.cppSlot()var date = new Date()cppClassId.timeSlot (date);cppClassId.dateTimeSlot(date)//String fromattingclickCount++buttonId.text = mValue.arg(clickCount).arg(clickCount*2)}}
}

可以看到,在C++端,日期类是QDatetime,时间类是QTime,而qml中是Date,它会有getFullYear和toGMTString等方法获得年份和GMT格式日期。
看下打印结果:
在这里插入图片描述
这里最后一行接受的时间似乎有年份月份星期的错误,原因是我们传递的是QTime,这只包含时分秒时间,不包含日期,但qml端打印的时候是按照完整日期来打印的。

二、字符串替换参数

这里介绍一个替换字符串参数的方法:

property string mValue:"Clicked %1 times, double is %2"
property int clickCount:0
    Button{id: buttonIdtext: "test"onClicked: {//String fromattingclickCount++buttonId.text = mValue.arg(clickCount).arg(clickCount*2)}}

功能是每次点击递增clickCount,然后按钮文本进行相应的修改。
这种做法和QString.arg().arg()是类似的。
在这里插入图片描述

三、总结

本节学习了时间日期的数据传递,这也是一个比较常用的变量。

http://www.dtcms.com/a/578483.html

相关文章:

  • 大模型agent技术
  • 松原市网站建设网站导航栏设计要求
  • 北京专业网站制作介绍大学生二手书网站开发需求
  • spark df 写入lanceDB
  • WebSocket 前端node启用ws调试
  • ArcGIS与ENVI在生态影响评价中的融合应用:八大专题图制作全解析
  • AI赋能企业办公:文多多AiPPT以技术创新破解行业痛点
  • 网站建设用哪的图片不侵权语言 网站开发
  • 网站建设公司的前景字体设计素材网
  • 嵌入式单片机各种通信(UART/RS232/RS485/I2C/CAN/ SPI)
  • 特斯拉股东大会前瞻,Optimus利好已至
  • 网站宣传的方法主要有2.0网站线上建设什么意思
  • iSCSI 磁盘扩容后节点不刷新容量的问题解决(StarWind + Linux)
  • Linux——web服务
  • 做淘宝客网站哪个好用wordpress文章图片保存到本地
  • 光子精密闪测仪 为中国制造提供更可靠、更高效、更懂工艺的尺寸测量方案
  • 上海设计师网站有哪些个人网站怎么设计
  • 【数据结构】非线性结构——树、堆,散列表和图
  • 怎样在百度上建网站南昌模板建站公司
  • 锐旗 天梯网站建设重庆seo网站系统
  • 学院校园网网站建设情况手机行业网站
  • 江苏恒健建设集团有限公司网站校车网站建设
  • 玉林建设工程信息网站专门做纪录片的网站
  • 启动服务上FUNASR 服务 ws 连接
  • 一些实用的linux指令
  • 操作系统第一章学习
  • 超链接查看太麻烦,Excel怎么快速提取单元格内的超链接地址?
  • 大学生课程设计网站seo网站排名优化快速排
  • React Native Community CLI命令执行 | CVE-2025-11953 复现研究
  • 大厂做网站shijuewang如何用ps做创意视频网站