Qt设置系统时间

合集下载

自动测硫仪说明书qts8000

自动测硫仪说明书qts8000

目录一、概述--------------------------------------------------------------------1-2二、及工作原理-----------------------------------------------------------2-4三、仪器结构------------------------------------------------------------4-5四、触摸屏软件操作使用-----------------------------------------------5-8五、电脑软件操作--------------------------------------------------------9-11四、装箱清单----------------------------------------------------------------12第一章概述1.1概述QTS-8000型微机全自动测硫仪主要用于煤,重油等物质的全硫含量的测定,其主要的特点是人工称样放样后的操作仪器可以自动连续地批量进行,更可以随时动态地增加式样,极大的提高测试效率。

1.2技术参数1、法测硫范围:0.1—20%2、测硫分辨率:0.013、测试时间:4分钟—8分钟(依试样的种类和重量有关)4、测试温度:1150℃(煤),920℃(油)5、控温精度:±5℃6、试样重量:50mg7、试样数量:一次放置1—14个,无限制的追加试样8、测试方法:库仑滴定9、精密度:符合GB/T214-199610、准确度:在标准样品的允许误差范围内11、电源:220V±10% 50Hz12、功率:≦3.5kw13、仪器尺寸:740mm×590mm×440mm14、仪器重量:40kg1.3测试环境要求和用户自备材料1 环境温度0~40℃,相对湿度≤80%2 周围无强烈震动、灰尘、强电磁干扰、腐蚀性气体。

如何设置gec2410开发板系统时间及硬件时间(RTC)

如何设置gec2410开发板系统时间及硬件时间(RTC)

如何设置gec2410开发板系统时间及硬件时间(RTC)如何设置gec2410开发板系统时间及硬件时间(RTC)2008-06-29 21:27 483人阅读评论(0) 收藏举报之前使用开发板时发现每次开机后,系统的时间都恢复到初始状态1969年,因为QT界面要显示采集数据的时间,没办法只能自己去解决这个问题,这两天总算把问题搞定了。

一、先说一下时钟的概念,时钟包括硬件时钟和系统时钟,系统时钟就是linux系统显示的时间,用命令date可以显示当前系统时间;硬件时钟就是硬件自身的时间了。

它们两者没有关系的,但是可以通过命令设置系统时钟和硬件设置,让它们同步。

在linux系统设置系统时钟用命令date,格式为:date ************.10,表示系统时间设置为2008年6月29日20时50分10秒。

硬件时钟RTC时间是通过hwclock命令来设置的,比如说硬件时间要设置为2008年6月29日20时50分10秒,则应该先用date ************.10,然后用命令:hwclock -w,这样RTC时间就跟系统时间一致了。

二、确保RTC在开发板断电后能继续工作。

原来的gec2410开发板的底层板电路有问题,RTC无法工作,导致开机时RTC的时间也回到了1969年(用hwclock命令查看硬件时间),后来发现3.3v的电池通过两个电阻跟RTC的VDDRTC(为RTC提供电压的引脚)相连后电压不要1v,而RTC工作电压为1.8v左右,前天去了广嵌,朱工把D8电阻短路掉,D9电阻换成一个发光二级管(压降为1.5v左右),这样开发板断电后就可以用3.3v的电池供电了。

三、让系统时间和RTC时间同步。

因为每次开机后系统的时间都是系统原来的时间,比如说1969年1月1日1时1分1秒,为了让系统时间和RTC时间同步,可以在文件系统中etc/init.d/rcS添加如下命令:/sbin/hwclock -s,这样每次开机时系统就会读取RTC的时间,系统时间就与RTC时间同步了。

QT日志系统的使用

QT日志系统的使用

QT日志系统的使用Qt日志系统是Qt提供的一种用于记录和管理日志信息的功能,可以帮助我们在开发过程中更好地进行日志的记录和查看。

本文将详细介绍Qt日志系统的使用方法和常见应用场景。

一、Qt日志系统简介Qt日志系统是基于qDebug、qWarning、qCritical等宏定义实现的,可以将日志信息输出到控制台、文件、系统日志等不同的输出目标。

通过使用Qt日志系统,我们可以更加方便地进行日志的记录和查看,提高调试效率。

二、Qt日志系统的使用步骤1.包含所需的头文件,添加相关的宏定义:#include <QDebug>2.输出日志信息:qDebug( << "Debug message";qWarning( << "Warning message";qCritical( << "Critical message";3.配置日志系统的输出目标:a)将日志信息输出到控制台:qSetMessagePattern("%{message}");qInstallMessageHandler(0);b)将日志信息输出到文件:qInstallMessageHandler(&customMessageHandler);void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) static QFile file("log.txt");if (!file.isOpen()file.open(QIODevice::Append , QIODevice::Text);}QTextStream out(&file);out << msg << endl;file.flush(;if (type == QtFatalMsg)abort(;}4.使用日志系统的其他功能:a)设置日志级别:qSetMessagePattern("%{message}");qInstallMessageHandler(0);qSetLogLevel(QtDebugMsg); // 设置日志级别为Debugb)输出自定义的日志信息:qInstallMessageHandler(&customMessageHandler);void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)//自定义日志输出逻辑三、Qt日志系统的常见应用场景1.调试代码:在开发过程中,我们经常会使用qDebug输出一些调试信息,通过查看日志可以更方便地定位问题和调试代码。

[整理]Qt中时间函数的使用

[整理]Qt中时间函数的使用

QTime::QTime()默认构造函数,构造一个时,分,秒都为0的时间,如00:00:00.000(午夜)QTime::QTime(int h, int m, int s=0, int ms = 0)构造一个用户指定时,分,秒的时间.其参数有效值为:h:0--23m:0--59ms:0--999QTime QTime::addMSecs(int ms) const返回一个当前时间对象之后或之前ms毫秒的时间对象(之前还是之后视ms的符号,如为正则之后,反之之前)如:QTime time(3,0,0);QTime newTime1 = time.addMSecs(1000);QTime newTime2 = time.addMSecs(-1000);则newTime1是一个比time所指定时间(03:00:00.000)延后1000毫秒也即1秒的时间(03:00:01.000),而newTime2则提前1000毫秒(0 2:59:59.000)QTime QTime::addSecs(int nsecs) const与addMSecs()相同,只是nsecs单位是秒.即返回一个当前时间对象之前或之后的时间对象.int QTime::elapsed() const返回最后一次调用start()或restart()到现在已经经过的毫秒数.如果经过了24小时之后,则计数器置0.如果系统时间设置改变,则结果不确定.int QTime::hour() const返回时间对象的小时,取值范围(0--23)int QTime::minute() const返回时间对象的分钟,取值范围(0--59)int QTime::second() const返回时间对象的秒,取值范围(0--59)int QTime::msec() const返回时间对象的毫秒,取值范围(0--999)bool QTime::isNull() const如果时间对象等于00:00:00.000,则返回true;反之返回false.bool QTime::isValid() const如果时间对象是有效的,则返回true;反之返回false.(即:时,分,秒,毫秒都在其取值范围之内)int QTime::msecsTo(const QTime &t) const返回当前时间对象到t所指定的时间之间的毫秒数.如果t早于当前时间对象的时间,则返回的值是负值.因为一天的时间是86400000毫秒,所以返回值范围是-86400000--86400000int QTime::secsTo(const QTime &t) const与msecsTo()基本相同,只是返回的是秒数,返回值的有效范围是-86400--86400int QTime::restart()设置当前时间对象的值为当前系统时间,并且返回从最后一次调用start()或restart()到现在的毫秒数.如果计数器超出24小时,则置0.如果计数器计数时系统时间设置改变,则结果不确定.bool QTime::setHMS(int h, int m, int s, int ms = 0)设置当前时间对象的时,分,秒和毫秒.如果给定的参数值有效,则返回true,否则返回false.void QTime::start()设置当前时间对象的值为当前系统时间,这个函数实际是结合restart()和elapsed()用来计数的.QString QTime::toString(const QString &format) const按照参数format指定的格式用字符串形式输出当前时间对象的时间.参数format用来指定时,分,秒,毫秒的输出格式.如(hh:mm:ss.zzz)h:表示小时,范围是0--23hh:用两位数表示小时,不足两位的前面用0补足,如(0点:00,3点:03,11点:11)m:表示分钟,范围0--59mm:用两位数表示分钟,不足两位的前面用0补足.s:表示秒,范围0--59ss:用两位数表示秒,不足两位的前面用0补足.z:表示毫秒,范围0--999zzz:用三位数表示毫秒,不足三位的前面用0补足.AP:用AM/PM显示.ap:用ap/pm显示.例如:QTime time(14,3,9,42);//设置时间为14:03:09.042QString i = time.toString("hh:mm:ss.zzz");//结果为14:03:09.042QString j = time.toString("h:m:s.z");//结果为14:3:9.42QString m = time.toString("h:m:s.z AP");//结果为2:3:9.42 PMQString n = time.toString("h:m:s.z ap");//结果为2:3:9.42 pmQString QTime::toString(Qt::DateFormat f = Qt::TextDate) const按照参数format指定的格式用字符串形式输出当前时间对象的时间.参数的可选值:Qt::TextDate:格式为HH:MM:SSQt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SSQt::LocalDate:字符串格式依赖系统本地设置----------------------------------------------------------------------------------------------------------------------------------------静态成员函数:QTime QTime::currentTime()返回当前的系统时间.QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)使用参数format指定的格式根据参数string指定的时间返回一个时间对象。

QT中的日期和时间格式

QT中的日期和时间格式

QT中的⽇期和时间格式⼀.⽇期QDate1.QString QDate::shortDayName ( int weekday )返回这⼀⽇weekday在星期中的名称。

1 = “Mon”、2 = “Tue”、……7 = “Sun”⽇名称将根据系统本地设置⽽改变。

2.QString QDate::shortMonthName ( int month )返回这⼀⽉month的名称。

1 = “Jan”、2 = “Feb”、……12 = “Dec”⽉名称将根据系统本地设置⽽改变。

3.QString QDate::longDayName ( int weekday )返回这⼀⽇weekday在星期中的长名称。

1 = “Monday”、2 = “Tuesday”、……7 = “Sunday”⽇名称将根据系统本地设置⽽改变。

4.QString QDate::longMonthName ( int month )返回这⼀⽉month的长名称。

1 = “January”、2 = “February”、……12 = “December”⽉名称将根据系统本地设置⽽改变。

5.QString QDate::toString ( const QString & format )返回⼀个字符串的⽇期。

format参数决定了结果字符串的格式。

这些是可能⽤到的表达式:d - 没有前置0的数字的天(1-31)dd - 前置0的数字的天(01-31)ddd - 缩写的⽇名称(Mon-Sun)。

使⽤QDate::shortDayName()。

dddd - 长的⽇名称(Monday-Sunday)。

使⽤QDate::longDayName()。

M - 没有前置0的数字的⽉(1-12)MM - 前置0的数字的⽉(01-12)MMM - 缩写的⽉名称(Jan-Dec)。

使⽤QDate::shortMonthName()。

MMMM - 长的⽉名称(January-December)。

qt 等待函数

qt 等待函数

qt 等待函数
Qt中有许多等待函数,这些函数可以让程序在某些特定的情况下等待一定的时间。

下面列出一些常用的等待函数:
1. QThread::sleep(msecs):暂停当前线程的执行,直到msecs 毫秒后继续执行。

2. QCoreApplication::processEvents():处理来自操作系统的事件,包括GUI事件和定时器事件。

3. QEventLoop::exec():进入事件循环,直到quit()或exit()被调用后才退出。

4. QTimer::singleShot():设置一个定时器,在指定的时间之后触发timeout()信号。

5. QSemaphore::acquire()和QSemaphore::release():控制并发或同步,可以阻塞或非阻塞地获取或释放信号量。

需要注意的是,等待函数会阻塞当前线程的执行,使程序在等待期间无法响应GUI事件或处理其他任务。

因此,在使用等待函数时应当谨慎,尽量避免对用户造成不良的用户体验。

【Qt开发】QTime类

【Qt开发】QTime类

【Qt开发】QTime类QTime类为⽤户提供⼀系列时间的函数,封装的很全⾯,⼏乎满⾜了各种时间的需求。

常⽤⽅法介绍1.QTime addMSecs(int ms) const当前时间增加毫秒,ms可为负2.QTime addSecs(int s) const当前时间增加秒,s可为负3.int elapsed() const返回⾃上次调⽤start()或restart()以来经过的毫秒数。

4.int hour() const返回⼩时数5.int minute() const返回分钟数6.second() const返回秒数7.int msec() const返回毫秒数8.bool isNull() const如果时间为空返回true9.bool isValid() const判断当前时间对象是否有效,⽐如H的范围是0~23,M和S的范围是0~5910.int msecsSinceStartOfDay() const返回从⼀天开始的秒数,即从00:00:00开始的秒数。

11.int secsTo(const QTime &t) const返回从当前时间到t的秒数。

如果t⽐这个时间早,返回的毫秒数为负。

12.int msecsTo(const QTime &t) const返回从当前时间到t的毫秒数。

如果t⽐这个时间早,返回的毫秒数为负。

13.int restart()int将此时间设置为当前时间,并返回⾃上次调⽤start()或restart()以来经过的毫秒数。

14.bool setHMS(int h, int m, int s, int ms = 0)将时间设置为⼩时h、分钟m、秒s和毫秒ms。

15.void start()将当前系统时间记录为当前时间16.QString toString(const QString &format) const将时间转化为特定的字符串格式17.QString toString(Qt::DateFormat format = Qt::TextDate) const按照Qt::DateFormat的格式转化18.QTime currentTime()获得系统当前时间19.QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)从Qt::DateFormat转化为QTime对象20.QTime fromString(const QString &string, const QString &format)从特定的字符串格式转化为QTime对象时间字符串格式h:没有补零的⼩时(如果AM/PM显⽰,则为0到23或1到12)hh:位数不够需要补零的⼩时(00⾄23或01⾄12,如果是AM/PM显⽰)m:没有补零的分钟(0到59)mm:位数不够需要补零的分钟(00到59)s:没有补零的秒(0到59)ss:位数不够需要补零的秒(00到59)z:没有补零的毫秒(0到999)zzz:位数不够需要补零的毫秒(000到999)ap/AP:上午/下午,ap为am或pm,AP为AM或PM例:hh:mm:ss.zzz 08:18:68.138h:m:s ap 8:18:68 am。

Qt-获取系统当前时间

Qt-获取系统当前时间

Qt-获取系统当前时间简介Qt获取系统当前时间的四种⽅法(⼀般使⽤第⼀种或者第⼆种)⽅法⼀:获取带⽇期的时间,使⽤QDateTime类QDateTime current_date_time =QDateTime::currentDateTime();QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");//current_date字符串结果为"2016.05.20 12:17:01.445 周五"其中时间的显⽰格式可灵活配置,此处简单说明本实例中⽤到的部分:yyyy表⽰年;MM表⽰⽉;dd表⽰⽇; hh表⽰⼩时;mm表⽰分;ss表⽰秒;zzz表⽰毫秒;ddd表⽰周⼏注:详细配置格式内容较多,有需要的请⾃⾏查看Qt Assistant中关于函数QString QDateTime::toString ( const QString & format ) const的说明⽅法⼆:使⽤QTime类QTime current_time =QTime::currentTime();int hour = current_time.hour(); //当前的⼩时int minute = current_time.minute(); //当前的分int second = current_time.second(); //当前的秒int msec = current_time.msec(); //当前的毫秒当然QTime也可以像QDateTime::toString那样直接输出固定格式的字符串,使⽤⽅法与QDateTime::toString类似,也可参考Qt Assistant中关于函数QString QTime::toString ( const QString & format ) const的说明⽅法三:使⽤标准的C语⾔函数localtime(精确到秒)注:需要包含time.h头⽂件1、使⽤strftime()进⾏格式转换time_t t = time( 0 );char tmp[64];strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );printf("%s\n",tmp);//输出为“2016/05/20 13:11:57 Friday 本年第141天中国标准时间”其中函数size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr)功能为根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。

【转】QT获取系统时间,以及设置日期格式

【转】QT获取系统时间,以及设置日期格式

【转】QT获取系统时间,以及设置⽇期格式例如我要在⼀个label上设置当前时间QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显⽰格式label->setText(str);//在标签上显⽰时间QDateTime::toString ( const & format ) constReturns the datetime as a string. The format parameter determines the format of the result string.These expressions may be used for the date:Expression Outputd the day as number without a leading zero (1 to 31)dd the day as number with a leading zero (01 to 31)ddd the abbreviated localized day name (e.g. 'Mon' to 'Sun'). Uses ().dddd the long localized day name (e.g. 'Monday' to ''). Uses ().M the month as number without a leading zero (1-12)MM the month as number with a leading zero (01-12)MMM the abbreviated localized month name (e.g. 'Jan' to 'Dec'). Uses ().MMMM the long localized month name (e.g. 'January' to 'December'). Uses ().yy the year as two digit number (00-99)yyyy the year as four digit numberThese expressions may be used for the time:Expression Outputh the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)hh the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)m the minute without a leading zero (0 to 59)mm the minute with a leading zero (00 to 59)s the second without a leading zero (0 to 59)ss the second with a leading zero (00 to 59)z the milliseconds without leading zeroes (0 to 999)zzz the milliseconds with leading zeroes (000 to 999)AP use AM/PM display. AP will be replaced by either "AM" or "PM".ap use am/pm display. ap will be replaced by either "am" or "pm".All other input characters will be ignored. Any sequence of characters that are enclosed in singlequotes will be treated as text and not be used as an expression. Two consecutive singlequotes ("''") are replaced by a singlequote in the output.Example format strings (assumed that the is 21 May 2001 14:13:09):Format Resultdd.MM.yyyy21.05.2001ddd MMMM d yy Tue May 21 01hh:mm:ss.zzz14:13:09.042h:m:s ap2:13:9 pm。

Qt5.10+GUI完全参考手册

Qt5.10+GUI完全参考手册

Qt5.10 GUI完全参考手册作者:黄勇2018-8-18(第一版)出版社:??????前言本书作者:黄邦勇帅(原名:黄勇),QQ:42444472(读者意见可发至QQ)本书需具有C++语言基础,若对C++语言不熟习可参阅《C++语法详解》一书(电子工业出版社,黄勇,2017-6-30)本书适合希望使用Qt C++开发跨平台应用程序的读者阅读。

本书对QWidget的各个子类及其相关的框架结构作了详细的介绍,主要包括,元对象系统,信号和槽,Qt事件,Qt主窗口,布局管理及焦点系统,对话框,模型/视图框架,拖放和剪贴板,Qt文本系统,Qt界面外观,Qt 2D绘图和Qt的输入输出。

本书是一本讲解Qt原理性的书籍,对Qt的各种原理讲解透彻、深入、细致。

书中的示例都是完整的实例程序。

本书章节划分合理,思路清楚,不显得杂乱无章,对每个章节的知识点讲解全面细致,各章节内容不相互重合累缀,方便复习查阅。

相对于其他书而言对Qt的细节原理讲解更透彻简单易懂。

本人能力有限,其中难免有误解之处,望指出更正。

声明:禁止抄袭,复印,转载本书内容,本书作者拥有完全版权。

阅读完本书后,记得给出您对本书的价值哟第1章Qt快速入门目录1.1 Qt简介1.2 Qt Creator的使用1.2.1 qt的下载及安装注意事项1.2.2 Qt Create的界面介绍1.2.3 手动添加套件1.3 使用Qt Creator编写一个C++程序1.3.1 创建一个空项目1.3.2 添加C++代码1.3.3 运行程序1.3.4 使用QtCreator编辑器的一些技巧1.4 使用Qt Creator编写Qt程序1.4.1 方法1:使用代码编写Qt程序1.4.2 方法2:使用界面编辑器(即设计模式)编写Qt程序1.4.3 方法3:使用Qt设计师界面类编写Qt程序1.4.4 方法4:使用“Qt Widgets Application”编写Qt程序1.4.5 方法5:使用记事本及Qt命令程序编写Qt程序1.5 发布程序1.5.1 编译后生成的各种文件简介1.5.2 手动发布程序1.5.3 使用windeployqt工具部署文件(仅限windows)1.5.4 静态编译和动态编译1.6 Qt的重要文件简介1.6.1 项目文件(pro文件)及其语法1.6.2 moc简介1.6.3 pro、pri、prf文件简介1.7 Qt框架结构简介1.7.1 Qt基本框架1.7.2 Qt5模块架构1.8 帮助文档的使用第2章Qt元对象系统、信号和槽及事件目录2.1 元对象系统2.1.1 元对象系统基本概念2.1.2 Q_OBJECT宏2.1.3 使用Qt Creator启动元对象系统2.2.4 在命令行启动元对象系统2.2 元对象2.2.1 QByteArray类简介2.2.2 元对象系统与反射机制2.2.3 使用反射机制获取类对象的成员函数的信息2.2.4 使用反射机制获取与类相关的信息2.3 属性系统2.3.1 属性基础2.3.2 QVariant类2.3.3 使用QObject类中的成员函数存取属性值与动态属性2.3.4 使用反射机制获取属性的信息2.4 信号与槽2.4.1 信号和槽原理2.4.2 创建信号和槽2.4.3 信号和槽的关联(连接)2.4.4 断开信号和槽的关联2.4.5 signals、slots、emit关键字原型2.5 对象树与生命期2.5.1 组合模式与对象树2.5.2 QObject类、对象树、生命期2.6 事件2.6.1 QApplication、QGuiApplication、QCoreApplic2.6.2 Qt对事件的描述及分类2.6.3 事件的传递(或分发)及处理2.6.4 事件的接受和忽略2.6.5 事件过滤器2.6.6 自定义事件与事件的发送2.6.7 事件的传递顺序总结2.6.8 鼠标和键盘事件共同使用的类及函数2.6.9 鼠标事件2.6.10 键盘事件第3章Qt窗口及QWidget类目录3.1 QtWidgets模块及窗口基本概念3.1.1 QtWidgets模块中的类的继承图及帮助文档的使用3.1.2 Qt中窗口的基本概念3.1.3 Qt实现窗口及其部件的原理3.1.4部件构造函数参数f的取值3.1.5 部件的删除3.1.6 QFlags模板类详解3.2 QWidget类3.2.1 基础3.2.2 与部件大小和位置有关的成员3.2.3 窗口大小的限制与默认大小3.2.4 窗口的状态(最大化最小化)3.2.5 窗口的显示及可见性3.2.6 标题、透明度、启用、禁用3.2.7 窗口标志、设置其他属性3.2.8 获取窗口部件、设置父部件3.2.9 鼠标光标3.2.10 其他第4章Qt常用部件目录4.1 按钮部件4.1.1 共同特性4.1.2 QAbstractButton抽象类4.1.3 QPushButton类(标准按钮)4.1.4 QCheckBox类(复选按钮)4.1.5 QRadioButton类(单选按钮)4.1.6 QToolButton类(工具按钮)4.2 容器部件4.2.1 QDialogButtonBox按钮框4.2.2 QButtonGroup按钮组4.2.3 QGroupBox组框4.3 带边框的部件4.3.1 QFrame类4.3.2 QLabel标签4.3.3 QLCDNumberLCD数字4.4 输入部件4.4.1 QComboBox下拉列表、组合框4.4.2 QLineEdit行编辑器4.4.3 QValidator抽象类、验证器及其子类4.5 旋转框、微调按钮4.5.1 QAbstractSpinBox旋转框或微调框4.5.2 QSpinBox类4.5.3 QDoubleSpinBox类4.6 时间系统4.6.1 时间系统基础4.6.2 QDate类4.6.3 QTime类4.6.4 QDateTime类4.6.5 QDateTimeEdit类4.6.6 QDateEdit类和QTimeEdit类4.6.7 QTimer计时器4.6.8 QCalendarWidget日历部件公用枚举第5章Qt布局管理及焦点系统目录5.1布局原理5.1.1 布局基础5.1.2 部件拉伸(Stretch)原理及大小策略5.1.3 大小约束(主窗口最大最小大小的设置)5.1.4 内容边距(ContentsMargins)、间距(spacing)、QSpace5.1.5 嵌套布局及布局位于容器中5.2 各布局管理器类5.2.1 QBoxLayout及其子类(盒式布局)5.2.2 QGridLayout类(网格布局)5.2.3 QFormLayout类(表单布局)5.3 实现多页面切换5.3.1 QStackedLayout类(分组布局或栈布局)5.3.2 QStackedWidget类5.3.3 QTabBar类(选项卡栏)5.3.4 QTabWidget类(选项卡部件)5.4 QSplitter分离器(或分隔符)5.4.1 QSplitter类(分离器)5.4.2 QSplitterHandle类(分界线)5.5 自定义布局管理器5.5.1 QLayout抽象类中的公有成员函数5.5.2 QLayoutItem、QSpacerItem、QWidgetItem类5.5.3 自定义布局的实现5.6 Qt焦点系统5.6.1 焦点链(焦点循环)5.6.2 获取焦点信息5.6.3 焦点代理(FocusrProxy)5.6.4 设置焦点及焦点策略5.6.5 焦点事件5.6.6 自定义焦点循环5.6.7 QFocusFrame类(焦点框,自定义焦点框的外形)本章公用枚举第6章Qt对话框目录6.1 QDialog类(对话框)6.1.1 对话框与窗口6.1.2 模态与非模态对话框6.1.3 对话框返回的信息6.1.4 对话框与窗口的关闭和隐藏6.2 QMessageBox类(消息对话框)6.3 QErrorMessage类(错误消息对话框)6.4 QColorDialog类(颜色对话框)6.5 QFontDialog类(字体对话框)6.6 QFileDialog类(文件对话框)6.6.1 文件对话框基础6.6.2 QFileDialog类中的属性6.6.3 文件过滤器6.6.4 QFileDialog类中的函数6.6.5 QFileDialog类中的信号6.7 QInputDialog类(输入对话框)6.7.1 输入对话框基础6.7.2 QInputDialog类中的属性6.7.3 QInputDialog类中的函数6.7.4 QInputDialog类中的信号6.8 QProgressDialog类(进度对话框)和QProgressBar(进度条)6.8.1 进度条原理6.8.2 QProgressDialog类(进度对话框)6.8.3 QProgressBar类(进度条)6.9 QWizard类(向导)和QWizardPage类(向导页)6.9.1 向导基础6.9.2 向导外观6.9.3 向导中的按钮6.9.4 向导中的页面6.9.5 验证页面中的内容6.9.6 各页面间的通信(字段)6.9.7 实现非线性向导6.9.8 QWizard类中的属性6.9.9 QWizard类中的函数6.9.10 QWizardPage类中的属性和函数第7章Qt主窗口目录7.1 QMainWindow类主窗口基础7.2 QMenu类、QMenuBar类、QAction类基础7.2.1 基本概念7.2.2 创建菜单的方法7.2.3 部件的所有权7.2.4 QAction动作基础7.3 QShortcut类、快捷键7.3.1 快捷键基础7.3.1 QShortcut类中的属性7.3.2 QShortcut类中的函数7.4 QKeySequence类、键序列7.4.1 键序列基础7.4.2 QKeySequence类中的枚举7.4.3 QKeySequence类中的函数7.5 QAction类、QActionGroup类7.5.1 动作基本规则7.5.2 QAction类中的属性7.5.3 QAction类中的函数7.5.4 QAction类中的槽和信号7.5.5 QWidget类中与QAction有关的函数7.5.6 QActionGroup类动作组7.6 QMenu类、菜单7.6.1 菜单基本规则7.6.2 QMenu类中的属性7.6.3 QMenu类中的函数7.7 QMenuBar类、菜单栏7.7.1 菜单栏基本规则7.7.2 QMenuBar类中的属性7.7.3 QMenuBar类中的函数7.8 QToolBar类、工具栏7.8.1 工具栏基本规则7.8.2 QToolBar类中的属性7.8.3 QToolBar类中的函数7.8.4 QToolBar类中的信号7.9 QStatusBar类、状态栏7.9.1 状态栏基本规则7.9.2 QStatusBar类中的属性7.9.3 QStatusBar类中的函数7.10 QDockWidget类、可停靠窗口、悬浮窗口7.10.1 可停靠窗口基本规则7.10.2 QDockWidget类中的属性7.10.3 QDockWidget类中的函数7.10.4 QDockWidget类中的信号7.11 QMainWindow类、主窗口7.11.1 QMainWindow类中的属性7.11.2 QMainWindow类中的函数7.11.3 QMainWindow类中的信号第8章Qt模型、视图框架目录第1篇自定义模型/视图框架8.1 模型、视图原理8.2 模型:QAbstractItemModel类8.3 视图:QAbstractItemView类(视图基类)8.4 选择:QItemSelectionModel类与QItemSelection类8.5 委托:QAbstractItemDelegate与QStyleOptionViewItem8.6 索引:QModelIndex类8.7 自定义视图示例第2篇Qt实现的标准模型/视图框架相关类8.8 标准模型:QStandardItemModel类及QStandardItem类8.9 列表模型:QAbstractListModel类、QAbstractTableModel类、QStringListModel类8.10 文件系统模型:QFileSystemModel类8.11 表格视图:QTableView类8.12 列表视图:QListView类8.13 树视图:QTreeView类8.14 标头视图:QHeaderView类8.15 列视图:QColumnView类8.16 项目委托:QStyleItemDelegate类第3篇使用现成的模型/视图部件8.17 表格部件:QTableWidget类8.18 列表部件:QListWidget类8.19 树部件:QTreeWidget类第9章Qt拖放、剪贴板9.1 拖放原理9.1.1 拖放基本原理9.1.2 拖放动作或称为放置动作9.1.3 使用拖放打开文件9.2 与拖放事件有关的类及函数9.2.1 QDropEvent类9.2.2 QDragMoveEvent类9.2.3 QDragEnterEvent类和QDragLeaveEvent类9.2.4 QWidget类中与拖放有关的函数9.3 QDrag类9.4 QMimeData类与拖放自定义类型数据9.4.1 基本规则9.4.2 QMimeData类中的函数9.4.3 子类化QMimeData9.4.4 重新实现QMimeData类中的虚函数9.5 QClipboard类(剪贴板)第10章Qt滚动目录10.1 滚动条、滑块(QAbstractSlider类、QSCrollBar类、QSlider类)10.1.1 基本原理10.1.2 最大、最小值和步长10.1.3 跟踪Tracking与当前值Value、当前位置Position10.1.4 QAbstractSlider类中的属性和函数10.1.5 QAbstractSlider类中的信号10.1.6 QScrollBar类10.1.7 QSlider类10.1.8 QDial类10.2 QScrollArea类、(滚动区域)10.3 QAbstractScrollArea类(抽象滚动区域)10.3.1 QAbstractScrollArea类中的属性10.3.2 QAbstractScrollArea类中的函数10.3.3 自定义滚动区域第11章Qt文本系统目录11.1 重要基本概念及原理11.2 QPlainTextEdit类11.3 QTextEdit类11.4 表格:QTextTable和QTextTableFormat类11.5 框架:QTextFrame和QTextFrameFormat类11.6 文本块:QTextBlock、QTextBlockFormat类11.7 列表:QTextList、QTextListFormat类11.8 图像:QTextImageFormat类和文本片段:QTextFragment类11.9 插入自定义文档对象(文档元素)与总结11.10 QTextCharFormat类及QTextFormat和QTextObject类简介11.11 QTextCursor类11.12 QTextDocument类11.13 其他类:QTextOption、QTextDocumentFragment等11.14 语法高亮:QSyntaxHighlighter类第12章Qt 2d绘图目录12.1 二D绘图基础12.2 绘制直线与QLineF类12.3 绘制矩形与QRectF类12.4 绘制椭圆、弧、弦、扇形、圆角矩形12.5 绘制点、折线、多边形(QPolygonF类)12.6 QPainterPath类(路径)12.7 绘制文本12.8 QPen类(画笔)12.9 QBrush类(画刷)与渐变(QGradient类及其子类)12.10 填充12.11 裁剪区域(QRegion类)12.12 坐标变换(QTransform类)12.13 绘制图像(QImage、QPixmap、QBitmap)12.14 抗锯齿和图像合成第13章Qt界面外观13.1 简单的使用QStyle类13.1.1样式基础13.1.2 QStyleFactory类及其函数13.2 QPalette类(调色版)13.3 自定义部件的外观13.4 子类化QStyle13.4.1 样式元素13.4.2 样式绘制函数13.4.3 子类化QStyle类的方法13.5 QStyle类的其他枚举及成员函数13.5.1 QStyle::PixMetric枚举及相关成员函数13.5.2 QStyle::StandardPixmap枚举及相关成员函数13.5.3 QStyle::StyleHint枚举及相关成员函数13.5.4 其他枚举及相关成员函数13.5.5 QStyle类中的其他成员函数13.6 QStyle类中枚举的总结13.7 QStyleOption(样式选项)及其子类13.8 样式表13.8.1 样式表基础13.8.2 样式表语法基础13.8.3 选择器13.8.4 子控件13.8.5 伪状态13.9 样式表的属性13.9.1 背景色、前景色、所选文本的颜色13.9.2 盒子模型及相关属性13.9.3 与位置和大小有关的属性13.9.4 字体、文本、图标、图像、不透明度属性13.9.5 其他属性13.9.6 属性类型13.10 设置各部件样式表的方法(综合示例)13.10.1 基本规则13.10.2 设置各部件样式表的方法13.11 样式表的其他规则13.11.1 层叠和继承13.11.2 名称空间及使用QObject属性13.11.3 冲突解决第14章Qt输入/输出(暂定)14.1 QDataStream类(数据流)14.2 QTextStream类(文本流)14.3 QFile类14.4 QDir类本文作者:黄邦勇帅(原名:黄勇)本文要求读者已经非常熟悉C++的语法,若读者不熟悉C++语法,推荐参阅《C++语法详解》(作者:黄勇)一书,电子工业出版社出版。

[整理]Qt中时间函数的使用

[整理]Qt中时间函数的使用

QTime::QTime()默认构造函数,构造一个时,分,秒都为0的时间,如00:00:00.000(午夜)QTime::QTime(int h, int m, int s=0, int ms = 0)构造一个用户指定时,分,秒的时间.其参数有效值为:h:0--23m:0--59ms:0--999QTime QTime::addMSecs(int ms) const返回一个当前时间对象之后或之前ms毫秒的时间对象(之前还是之后视ms的符号,如为正则之后,反之之前)如:QTime time(3,0,0);QTime newTime1 = time.addMSecs(1000);QTime newTime2 = time.addMSecs(-1000);则newTime1是一个比time所指定时间(03:00:00.000)延后1000毫秒也即1秒的时间(03:00:01.000),而newTime2则提前1000毫秒(0 2:59:59.000)QTime QTime::addSecs(int nsecs) const与addMSecs()相同,只是nsecs单位是秒.即返回一个当前时间对象之前或之后的时间对象.int QTime::elapsed() const返回最后一次调用start()或restart()到现在已经经过的毫秒数.如果经过了24小时之后,则计数器置0.如果系统时间设置改变,则结果不确定.int QTime::hour() const返回时间对象的小时,取值范围(0--23)int QTime::minute() const返回时间对象的分钟,取值范围(0--59)int QTime::second() const返回时间对象的秒,取值范围(0--59)int QTime::msec() const返回时间对象的毫秒,取值范围(0--999)bool QTime::isNull() const如果时间对象等于00:00:00.000,则返回true;反之返回false.bool QTime::isValid() const如果时间对象是有效的,则返回true;反之返回false.(即:时,分,秒,毫秒都在其取值范围之内)int QTime::msecsTo(const QTime &t) const返回当前时间对象到t所指定的时间之间的毫秒数.如果t早于当前时间对象的时间,则返回的值是负值.因为一天的时间是86400000毫秒,所以返回值范围是-86400000--86400000int QTime::secsTo(const QTime &t) const与msecsTo()基本相同,只是返回的是秒数,返回值的有效范围是-86400--86400int QTime::restart()设置当前时间对象的值为当前系统时间,并且返回从最后一次调用start()或restart()到现在的毫秒数.如果计数器超出24小时,则置0.如果计数器计数时系统时间设置改变,则结果不确定.bool QTime::setHMS(int h, int m, int s, int ms = 0)设置当前时间对象的时,分,秒和毫秒.如果给定的参数值有效,则返回true,否则返回false.void QTime::start()设置当前时间对象的值为当前系统时间,这个函数实际是结合restart()和elapsed()用来计数的.QString QTime::toString(const QString &format) const按照参数format指定的格式用字符串形式输出当前时间对象的时间.参数format用来指定时,分,秒,毫秒的输出格式.如(hh:mm:ss.zzz)h:表示小时,范围是0--23hh:用两位数表示小时,不足两位的前面用0补足,如(0点:00,3点:03,11点:11)m:表示分钟,范围0--59mm:用两位数表示分钟,不足两位的前面用0补足.s:表示秒,范围0--59ss:用两位数表示秒,不足两位的前面用0补足.z:表示毫秒,范围0--999zzz:用三位数表示毫秒,不足三位的前面用0补足.AP:用AM/PM显示.ap:用ap/pm显示.例如:QTime time(14,3,9,42);//设置时间为14:03:09.042QString i = time.toString("hh:mm:ss.zzz");//结果为14:03:09.042QString j = time.toString("h:m:s.z");//结果为14:3:9.42QString m = time.toString("h:m:s.z AP");//结果为2:3:9.42 PMQString n = time.toString("h:m:s.z ap");//结果为2:3:9.42 pmQString QTime::toString(Qt::DateFormat f = Qt::TextDate) const按照参数format指定的格式用字符串形式输出当前时间对象的时间.参数的可选值:Qt::TextDate:格式为HH:MM:SSQt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SSQt::LocalDate:字符串格式依赖系统本地设置----------------------------------------------------------------------------------------------------------------------------------------静态成员函数:QTime QTime::currentTime()返回当前的系统时间.QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)使用参数format指定的格式根据参数string指定的时间返回一个时间对象。

qt安装教程及配置

qt安装教程及配置

qt安装教程及配置1. 首先,下载Qt安装包。

您可以从Qt官方网站下载适合您操作系统的安装包。

安装包一般是一个可执行文件,例如`qt-installer.exe`。

2. 双击安装包文件以运行安装向导。

根据提示,选择您想要安装的Qt版本。

您可以选择安装Qt Creator集成开发环境,以及其他一些可选组件。

点击"下一步"继续。

3. 下一步将要求您同意许可协议。

阅读协议后,如果您同意,请勾选"I accept the agreement"复选框,然后点击"下一步"。

4. 在接下来的屏幕上,您可以选择Qt的安装目录。

默认情况下,它会在系统的Program Files文件夹中创建一个名为"Qt"的文件夹。

您也可以选择其他目录。

点击"下一步"继续。

5. 在选择组件屏幕上,您可以选择要安装的Qt组件。

这些组件包括Qt编译器、Qt库、Qt助手等。

建议选择"Default"选项,它将安装一组常用的组件。

点击"下一步"继续。

6. 接下来,选择安装方式。

您可以选择"Online"安装或"Offline"安装。

如果您拥有良好的网络连接,请选择"Online"安装,因为它将从Qt服务器下载所需的文件。

如果您的网络较差,或者需要在没有网络连接的环境中安装Qt,请选择"Offline"安装。

7. 在接下来的屏幕上,您可以选择是否创建桌面和开始菜单快捷方式。

勾选对应的复选框,然后点击"安装"开始安装过程。

8. 安装过程可能需要一些时间,具体时间取决于您选择的组件和安装方式。

9. 安装完成后,您可以启动Qt Creator。

在首次运行时,您可能需要设置一些初始配置,例如选择编译器和调试器等。

qt中定时器Timer的使用[指南]

qt中定时器Timer的使用[指南]

qt中定时器Timer的使用qt中定时器Timer的使用有两种方法实现定时器。

第一种。

自己建立关联。

1.新建Gui工程,工程名可以设置为timer。

并在主界面上添加一个标签label,并设置其显示内容为“0000-00-00 00:00:00 星期日”。

2.在mainwindow.h中添加槽函数声明。

private slots:void timerUpDate();3.在mainwindow.cpp中添加代码。

添加#include <QtCore>的头文件包含,这样就包含了QtCore下的所有文件。

构造函数里添加代码:QTimer *timer = new QTimer(this);//新建定时器connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));//关联定时器计满信号和相应的槽函数timer->start(1000);//定时器开始计时,其中1000表示1000ms即1秒4.然后实现更新函数。

void MainWindow::timerUpDate(){QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); //设置系统时间显示格式ui->label->setText(str);//在标签上显示时间}5.运行程序,效果如下。

第二种。

使用事件。

(有点像单片机中的定时器啊)1.新建工程。

在窗口上添加两个标签。

2.在main.cpp中添加代码,实现中文显示。

#include <QTextCodec>QTextCodec::setCodecForTr(QTextCodec::codecForLocale());3.在mainwindow.h中添加代码。

QT--日期操作QDateTime

QT--日期操作QDateTime

QT--⽇期操作QDateTime获取当前时间:QDateTime begin_time = QDateTime::currentDateTime();//获取系统现在的时间QDateTime转QString:QDateTime begin_time = QDateTime::currentDateTime();//获取系统现在的时间QString begin =begin_time .toString("yyyy.MM.dd hh:mm:ss.zzz ddd");debug显⽰结果:2019.03.13 14:47:24:333 周三QString转QDateTime:QString begin= "2019-03-31 12:24:36";QDateTime begin_time = QDateTime::fromString(begin, "yyyy-MM-dd hh:mm:ss");时间差:QString begin = "2019-03-31 12:24:36";QDateTime begin_time = QDateTime::fromString(begin, "yyyy-MM-dd hh:mm:ss");QString end = "2019-04-01 12:24:36";QDateTime end_time = QDateTime::fromString(end, "yyyy-MM-dd hh:mm:ss");begin_time.secsTo(end_time)//转换为秒 86400begin_time.daysTo(end_time)//转换为⽇ 1int ms = 1537537358;QDateTime dateTime = QDateTime::fromTime_t(ms);QString str = dateTime.toString("yyyy-MM-dd hh:mm:ss");将当前时间转化为时间戳QDateTime begin_time = QDateTime::currentDateTime();//获取系统现在的时间uint stime = begin_time.toTime_t();获取时间的前⼀天: QString str = "2019-03-01 12:00:01";QDateTime begin_time = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss");QString str= begin_time .addDays(-1).toString("yyyy-MM-dd hh:mm:ss");//获取前⼀天时间,负数为之前的时间正数为之后的时间同时还有addMonths(int months)、addYears(int years)、addSecs(qint64 secs)、addMSecs(qint64 msecs) 等 。

EI-6001QT的简单操作流程

EI-6001QT的简单操作流程

EI-6001QT常见报警信息的简单解决方法火灾报警系统通常为四种状态,系统运行正常、火警、故障和外部联动设备动作及反馈。

以下所述是通常在火警和故障时的处理办法和操作方法。

一、当主机报火警时:第一步:根据控制器上显示的火警信息(回路/地址、楼层、房间等具体信息显示)或者根据控制器上所显示的回路/地址,到现场或者平面图上找到相应的部件.第二步:派相关人员一定要及时到现场检查是否有明火,或者是否为部件误报。

如果是报火警,排除火警后按控制器复位键将控制器复位,系统恢复正常;如果是部件误报,查明误报原因.排除故障后按控制器复位键将控制器复位系统恢复正常。

(现场报火警的探头、手报、消火栓等设备上的报警灯应为红色)。

第三步:在确定发生火灾情况下首先要通过电话通知消防控制室人员,将主机打到自动或者将区控板上的紧急启动按钮按下(压碎玻璃按下按钮即可),也可以将门旁边的紧急启停按钮按下,这个时候主机会发出警报,倒计时30秒之后打开气瓶,门头上的放气指示灯点亮(此时为了防止气体以及火势对人身造成伤害,禁止进入房间内);如果在主机倒计时30秒之内发现为误报火警可以将区控板上的紧急启动按钮复位或者按下紧急启停按钮的停止键(紧急启停按钮上写着停止的按钮),这个时候主机会停止动作。

火势较大时要拨打119火警电话.第四步:在每次报火警现场处理好后,要将消防主机进行复位,这样火灾报警控制器所显示的火警信息才能取消.↓二、当主机报故障时:可以先通过下列步骤将设备进行隔离:(这种办法只是对故障进行临时设置,之后要通知相关人员到现场查明原因,将故障排除。

如果不及时排除故障及火警信息的话,在真正发生火宅的时候就不能清楚的知道、如果没排除这些故障发生火宅的时候没收到报警信息将通过相应的办法查出是否因控制器故障排除没排除造成。

根据值班记录查出有没通知相关人员维修。

进而分清各方责任。

)故控制器不管发生什么异常时都要记录下。

并确认是什么。

系统故障排除后的部件隔离解除:三、主机的基本操作(常用项):密码123——分别有系统设置、系统查询、联动控制、打印。

qt的6个简单小案例

qt的6个简单小案例

qt的6个简单小案例
1. 计算器应用程序:创建一个简单的计算器应用程序,允许用户输入两个数字并选择要执行的操作(加法、减法、乘法或除法),然后显示结果。

2. 银行账户管理系统:创建一个简单的银行账户管理系统,允许用户创建、删除和管理他们的账户。

用户可以存款、取款和查询余额。

3. 待办事项列表:创建一个简单的待办事项列表应用程序,允许用户添加、编辑和删除待办事项。

用户可以设置优先级、截止日期和提醒。

4. 学生管理系统:创建一个简单的学生管理系统,允许用户添加、编辑和删除学生信息。

用户可以查看学生列表、按姓名或成绩排序,并计算平均成绩。

5. 跑步计时器:创建一个简单的跑步计时器应用程序,允许用户开始、暂停和重置计时器。

用户可以设置目标距离和目标时间,并显示实时速度和距离。

6. 天气应用程序:创建一个简单的天气应用程序,允许用户输入城市名称并获取当天的天气信息(如温度、湿度、风速等)。

用户还可以查看未来几天的天气预报。

Qt 隐藏鼠标

Qt 隐藏鼠标

Qt 隐藏鼠标 (2010-11-23 14:46)分类:Qtqt-读取和修改系统时间QTime ct = QTime::currentTime();修改系统时间// change the system timeQDateTime dt = QDateTime::currentDateTime();dt.setTime(timeEditor->time());time_t tt =(time_t)dt.toTime_t();int r = stime(&tt);if(r){if(errno== EPERM)QMessageBox::warning(this,"Error","You don't have permission to change system time.");}qt-全屏显示主要是设置setWindowFlags可以这样使用全屏幕yourwidget->setWindowFlags(Qt::window | Qt::FramelessWindowHint); //第一个Qt::window表示此widget是窗口类型,第二个参数使用无框架就是没有标题,状态栏等。

具体参考$QTPATH/examples/widgets/windowflags/我的是 /usr/local/Trolltech/Qt-4.4.3/examples/widget/windowflags运行里面的例子程序,自然就明白各个参数的意思了。

qt-隐藏鼠标指针在窗口的构造函数中使用this->setCursor(Qt::BlankCursor) 可以使用空指针,但是在arm板子上还是没有消除在运行时候加个参数就轻松搞定 ./program -qws -nomouse这样就可以可。

Qt Embedded Linux下隐藏鼠标箭头1、编译Qt库的时候添加编译选项QT_NO_CURSOR,这样cursor相关的代码统统不会被编译进去,自然鼠标光标也不会出现在程序中。

Qt系统运行时间差计算

Qt系统运行时间差计算

Qt系统运行时间差计算在网上查了很多资料,发觉网上很多用Qt写的系统运行时间差的例子写的都不是很全,今天自己研究了一下,可以成功得显示日时分秒,觉得不错,就与大家分享了#include<QtCore/QCoreApplication>#include<QDateTime>#include<QDebug>int main(int argc,char*argv[]){QCoreApplication a(argc,argv);QDateTime now=QDateTime::currentDateTime();QDateTime Moon_Festival;QDateTime xmas(QDate(now.date().year(),7,26),QTime(0,0));//QDate(now.date().year()取当前的年分,可以自己设置,比如2012Moon_Festival=xmas;//这里最大计数为天//这里涉及到两个函数daysTo()和SecsTo(),他们分别返回差值的天数和秒数,如果有朋友需要精确到毫秒的,QDateTime还提供了一个msecsTo() qDebug()<<now.daysTo(Moon_Festival)<<"days"<<now.secsTo(Moon_Festiv al)%(24*3600)/3600<<"hours"<<now.secsTo(Moon_Festival)%3600/60<<"min utes"<<now.secsTo(Moon_Festival)%60<<"seconds";return a.exec();}至于最大计数为年或者月的,因为涉及到每个月的天数不同,以及闰年的存在,我这里就不写了,如果大家有兴趣或者有需要的话,自己可以计算研究一下,然后与大家分享。

QT源码解析(九)解析QDateTime

QT源码解析(九)解析QDateTime

QT源码解析(九)解析QDateTimeQT源码解析(九)解析QDateTime本篇主要侧重于通过分析⼀个问题来解析QDateTime的代码问题提出:前⼏天⼀个朋友问我⼀个QDateTime的问题:QDateTime d = QDateTime::fromString("Mon,26 Apr 2010, 08:21:03","ddd,d MMM yyyy, hh:mm:ss");这种格式返回的QDateTime总是null。

问题分析:于是我亲⾃试验了⼀下,没错,果然是nullQ_ASSERT(d.isNull());然后拿出Qt Assistant,⾃⼰对照QDateTime的format格式看了⼀下,format的字符串的确没有任何错误,那错误到底出在哪⾥呢?于是开始调试跟踪,看看这个问题到底是出在什么地⽅。

第⼀个疑点出现在这⾥:注意QLocale::system();这个地⽅。

然后继续跟踪发现第⼆个疑点:看清楚了么?看不清楚没有关系,我已经圈出来了。

在QDateTimeParser::fromString函数中t是我们要解析的字符串,⽽val是⼀个1900-1-1的QDateTime值,看看他俩什么区别(就是上图圈出来的那两部分)?没错,⼀个是英⽂的,⼀个是中⽂的。

真相距离我们越来越近了,接下来继续跟踪。

findDay函数for循环这⼀部分的意思就是循环⽐较”星期⼀”到”星期⽇”和传⼊的字符串”星期⼏”这⼀部分是否相等,传⼊的字符串中”星期⼏”这⼀部分时”mon”,显然不会相等了。

于是我们找到了错误的根源。

错误是找到了,但是我们该如何解决这个错误呢?根据上⾯提到的两个疑点,我们判断可能跟QLocale有关。

我的系统是简体中⽂版的winxp,系统缺省的defaultLocale语⾔就是chinese,国家就是china。

问题解决:所以解决这个问题有两个办法:1. 装个英⽂版的系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Qt设置系统时间
大家都知道Qt中有QDateTime等有关时间与日期的类,类中包含很多成员函数,可以很方便的实现有关时间与日期的操作,比如:想要获得系统当前的时间与日期,可以调用currentDateTime();但是Qt并没有提供设置系统时间的方法,这样我们只能自己来区分平台,调用平台相关的API,这篇文章实现在Windows下的设置。

常用的与时间有关的Win32 API有两个:
GetSystemTime(); 与SetSystemTime(); 下面是函数原型:
Windows上实现:
VOID GetSystemTime(LPSYSTEMTIME lpSystemTime);
BOOL SetSystemTime( const SYSTEMTIME *lpSystemTime );
我们查一下MSDN 看看LPSYSTEMTIME 与 SYSTEMTIME 是什么东东:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
从中我们知道SYSTEMTIME 为结构体类型,LPSYSTEMTIME为结构体指针,传递给两个函数的参数都必须是指针或引用类型,下面看一个Qt的调用实例:
1#include <QtCore/QCoreApplication>
2#include <iostream>
3#include <time.h>
4#include <windows.h>
5#include <QDateTime>
6#include <QDebug>
7using namespace std;
8
9bool setDate(int,int,int);
10int main(int argc, char*argv[])
11{
12 QCoreApplication a(argc, argv);
13 qDebug()<<QDateTime::currentDateTime()<<endl; // Qt API 输出当前时间14setDate(2011,1,1); //设置时间
15 qDebug()<<QDateTime::currentDateTime()<<endl; // Qt API 获取当前时间16return 0; //让程序完成任务直接退出吧...
17}
18
19bool setDate(int year,int mon,int day)
20{
21 SYSTEMTIME st;
22 GetSystemTime(&st); // Win32 API 获取系统当前时间,并存入结构体st中
23 st.wYear=year;
24 st.wMonth=mon;
25 st.wDay=day;
26
27return SetSystemTime(&st); //Win32 API 设置系统时间
28}
29
Linux上实现:
qt-读取和修改系统时间
QTime ct = QTime::currentTime();
修改系统时间
// change the system time
QDateTime dt = QDateTime::currentDateTime();
dt.setTime(timeEditor->time());
time_t tt = (time_t)dt.toTime_t();
int r = stime(&tt);
if (r)
{
if (errno == EPERM)
QMessageBox::warning(this, "Error", "You don't have permission to change system time.");
}。

相关文档
最新文档