Qt设置系统时间

合集下载
  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

2#include

3#include

4#include

5#include

6#include

7using namespace std;

8

9bool setDate(int,int,int);

10int main(int argc, char*argv[])

11{

12 QCoreApplication a(argc, argv);

13 qDebug()<

15 qDebug()<

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.");

}

相关文档
最新文档