qt设置并修改系统时间的问题

时间:2021-10-29 23:33:04
本人使用Qt Creator,在XP系统下,最近纠结于如何修改显示系统时间
dialog.ui文件中,放置了time edit 和date edit两个控件,以及三个Label分别用于显示时间、日期和星期!
下面是代码部分:

dialog.h
 

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QTimer>
#include <QTime>
#include <QDate>
#include <windows.h>

namespace Ui {
    class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;

private slots:
    bool timeedit();
    bool dateedit();
    void timedisplay();
};

#endif // DIALOG_H

dialog.cpp
 

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),this,SLOT(timeedit()));
    connect(ui->dateEdit,SIGNAL(dateChanged(QDate)),this,SLOT(dateedit()));

    QTimer *timer = new QTimer;
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(timedisplay()));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::timedisplay()
{
    QTime ct = QTime::currentTime();
    QDate cd = QDate::currentDate();
    ui->timeLabel->setText(ct.toString("hh:mm"));
    ui->secondLabel->setText(ct.toString("s"));
    ui->dateLabel->setText(cd.toString("yyyy-MM-dd"));
    ui->weekLabel->setText(cd.toString("dddd"));
}

bool Dialog::timeedit()
{
    SYSTEMTIME st;
    GetSystemTime(&st);
    st.wHour=ui->timeEdit->time().hour();
    st.wMinute=ui->timeEdit->time().minute();
    return SetSystemTime(&st);
}

bool Dialog::dateedit()
{
    SYSTEMTIME st;
    GetSystemTime(&st);
    st.wYear = ui->dateEdit->date().year();
    st.wMonth = ui->dateEdit->date().month();
    st.wDay = ui->dateEdit->date().day();
    return SetSystemTime(&st);
}
问题来了!!!在time edit中修改时间,显示出来的系统时间与修改的时间有8小时的差,请教各位高手,到底是肿么了!?!?

15 个解决方案

#1


正确设置时间区域,如北京

#2


能具体的说吗?
引用 1 楼  的回复:
正确设置时间区域,如北京

#3


时区,设置时区,东八区差8小时 

#4


你既然已经知道问题的规律了,可以设置的时候加8个小时就解决问题了啊。

#5


有个问题问下 我textedit中输入字符 再把字符删除 为什么字体大小会变为默认的 谢谢

#6


引用 4 楼  的回复:
你既然已经知道问题的规律了,可以设置的时候加8个小时就解决问题了啊。
+1

#7


有什么函数调用吗?
引用 3 楼  的回复:
时区,设置时区,东八区差8小时

#8


也对。。。不过想先问问有什么函数之类的,也算学习嘛。。。

#9


SYSTEMTIME st;

GetSystemTime(&st); 这个是获取系统时间?难道你的系统时间有误??

#10


QDateTime有UTC时间和本地时间只说,你要获取的是本地时间,而不是UTC时间
另外,Qt没有提供修改系统时间的函数

#11


这个应该就是问题的所在了,我试了下把GetSystemTime改成了GetLocaltime,表示还是不行哎,
Qt Desighner 中time edit 和date edit 的timespec我也设的是localtime 呀?!
求解
引用 10 楼  的回复:
QDateTime有UTC时间和本地时间只说,你要获取的是本地时间,而不是UTC时间
另外,Qt没有提供修改系统时间的函数

#12


好吧。。。后来的问题原来是QT的老问题,改了程序之后仍旧编译之前的。。。浪费我这么久,哎。。。
谢谢大家咯,结贴给分~~

#13


qt设置并修改系统时间的问题
学习了,很好用啊

#14


你好,你能把你改好的这个程序发给我看下吗,我也在做这个东西呢

#15


我的qq1072224134

#1


正确设置时间区域,如北京

#2


能具体的说吗?
引用 1 楼  的回复:
正确设置时间区域,如北京

#3


时区,设置时区,东八区差8小时 

#4


你既然已经知道问题的规律了,可以设置的时候加8个小时就解决问题了啊。

#5


有个问题问下 我textedit中输入字符 再把字符删除 为什么字体大小会变为默认的 谢谢

#6


引用 4 楼  的回复:
你既然已经知道问题的规律了,可以设置的时候加8个小时就解决问题了啊。
+1

#7


有什么函数调用吗?
引用 3 楼  的回复:
时区,设置时区,东八区差8小时

#8


也对。。。不过想先问问有什么函数之类的,也算学习嘛。。。

#9


SYSTEMTIME st;

GetSystemTime(&st); 这个是获取系统时间?难道你的系统时间有误??

#10


QDateTime有UTC时间和本地时间只说,你要获取的是本地时间,而不是UTC时间
另外,Qt没有提供修改系统时间的函数

#11


这个应该就是问题的所在了,我试了下把GetSystemTime改成了GetLocaltime,表示还是不行哎,
Qt Desighner 中time edit 和date edit 的timespec我也设的是localtime 呀?!
求解
引用 10 楼  的回复:
QDateTime有UTC时间和本地时间只说,你要获取的是本地时间,而不是UTC时间
另外,Qt没有提供修改系统时间的函数

#12


好吧。。。后来的问题原来是QT的老问题,改了程序之后仍旧编译之前的。。。浪费我这么久,哎。。。
谢谢大家咯,结贴给分~~

#13


qt设置并修改系统时间的问题
学习了,很好用啊

#14


你好,你能把你改好的这个程序发给我看下吗,我也在做这个东西呢

#15


我的qq1072224134