利用QT的DateEdit和TimeEdit设置系统时间

作为QT的忠实粉,昨天才学习解决用qt的date设置系统的时间,可谓是映象深刻啊。刚开始在网上查找了很久,网上也有很多的方法,但是都不太适用于我目前的情况,于是经过不断的努力和不断的往前人得膀上爬,终于寻得一个方法,今天就来简单的谈上一谈。作为初级选手,就不用过多的言语表达我心中兴奋的情感了,直接用代码来表达,请看如下:

在我们使用QT时。很多时候都难免会用到系统的时间,但是系统的时间又不是很准,一般都为初始值,因此这就需要我们自己去手动设置了。手动设置呢有两种方法,一种是同ntp网络获取设置,一种就是简单粗暴的直接写上去了,当然用QT还不是最粗暴的,还有通过命令直接设置,这已经不在粗暴的范围了,这在我称之为野蛮。在QT的设置中可以直接的用:

                      QString time = "date -s \"2018-11-11 14:15:00\"" ;  //将日期和时间转为QString
                      QProcess::startDetached(time); 
                      QProcess::startDetached("hwclock -w"); // 同步系统时间
                      QProcess::startDetached("sync"); // 保存配置

操作完成OK,简单的时间设置就可以了。接下来说本章的重点,就是怎么样通过dateedit和timeedit控件设置本地时间。首先呢先在UI界面设置两个控件,如下图:

                                      利用QT的DateEdit和TimeEdit设置系统时间_第1张图片

拉出来就是这么个情况,如果想将本地时间设置为"2018-11-11 14:15:00”,而且在QT界面上随时可以设置。呢么首先将上面的时间设置日期为2018-11-11,时间设置为14:15:00,然后在代码中获取控件中的时间,代码为:                                     

   QString strYear = ui->dateEdit->sectionText(QDateEdit::YearSection);
    QString strMonth = ui->dateEdit->sectionText(QDateEdit::MonthSection);
    QString strDay = ui->dateEdit->sectionText(QDateEdit::DaySection);
    QString strHour = ui->timeEdit->sectionText(QTimeEdit::HourSection);
    QString strMinute =ui->timeEdit->sectionText(QTimeEdit::MinuteSection);
    QString strSecond = ui->timeEdit->sectionText(QTimeEdit::SecondSection);

    qDebug() << "Year : " << strYear;
    qDebug() << "Month : " << strMonth;
    qDebug() << "Day : " << strDay;
    qDebug() << "Hour : " << strHour;
    qDebug() << "Minute : " << strMinute;
    qDebug() << "Second : " << strSecond;

获取时间就OK了,然后就写入了,

特殊说明一下,在这里不能直接的将上面的数据写入去,因为格式有错误,所以要先将月份的英文简称处理成为简单的1-12 月,

                    if(strMonth == "Jan"){strMonth = "01";}
                  if(strMonth == "Feb"){strMonth = "02";}
                  if(strMonth == "Mar"){strMonth = "03";}
                   if(strMonth == "Apr"){strMonth = "04";}
                    if(strMonth == "May"){strMonth = "05";}
                    if(strMonth == "Jun"){strMonth = "06";}
                     if(strMonth == "Jul"){strMonth = "07";}
                    if(strMonth == "Aug"){strMonth = "08";}
                   if(strMonth == "Sep"){strMonth = "09";}
                    if(strMonth == "Oct"){strMonth = "10";}
                    if(strMonth == "Nov"){strMonth = "11";}
                    if(strMonth == "Dec"){strMonth = "12";}                     

                QString m3 = strYear+"-"+strMonth+"-"+strDay+" "+strHour+":"+strMinute+":"+strSecond;
                QString datetime = "date -s \""+m3+"\"" ;


                      QProcess::startDetached(datetime); 
                      QProcess::startDetached("hwclock -w"); // 同步系统时间
                      QProcess::startDetached("sync"); // 保存配置

然后就可以了,运行一遍程序,你会发现惊喜哦,从此以后系统的时间你爱怎么设置就怎么设置了,妈妈再也不用担心系统时间不对了。

你可能感兴趣的:(QT,系统时间设置,QT,Datetime,DateEdit,TimeEdit)