1.如图,目的是:计算系统已经运行的时间并实时显示在最下面(objectname为interval)的label上
(1)其中生产时间后面的label(objectname为timeLabel)是实时显示目前的系统时间的,是根据时钟变化的(此功能我已经正确实现)
(2)开机时间后面的datetimeEdit显示的是系统的开机时间,是不变的
2.我自己的思路是:获取timeLabel上显示的当前生产时间,并转化为时间戳;
获取datetimeEdit显示的是系统开机时间,并转化为时间戳。
两个时间相减,就得到了系统到目前为止的运行时间。
但是!!忽略了,构建运行这个项目的时候,生产时间和系统开机时间是一同获取的当前windows的时间,所以得到的系统运行时间是0,而且并不能实时的显示。
由于刚刚接触QT,菜鸟一个!!有没有大神指点迷津啊啊啊啊,或者如果可以,能不能直接把这部分的代码帮忙写一下啊
我的代码(没有报错)如下:
Mainwindow.h是:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void timerUpdate(void);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Mainwindow.cpp是:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTimer>
#include<Windows.h>
#include<QDebug>
#include<QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//生产时间的实时显示(添加信号槽的连接)
QTimer *timer =new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(timerUpdate()));
timer->start(1000);
//系统开机时间显示
QDateTime datetime=QDateTime(QDateTime::currentDateTime());
ui->dateTimeEdit->setDateTime(datetime);
//系统总运行时间显示
QString starttime0=ui->dateTimeEdit->text();
QDateTime starttime=QDateTime::fromString(starttime0,"yyyy-MM-dd hh:mm:ss"); //获取系统开机时间(即datetimeEdi上的显示时间)
QString endtime0=ui->timeLabel->text();
QDateTime endtime=QDateTime::fromString(endtime0,"yyyy-MM-dd hh:mm:ss"); //获取系统当前时变的生产时间,(即timeLabel上显示的系统实时时间)
uint end=endtime.toTime_t(); // 将时间转为时间戳
uint start=starttime.toTime_t();
int time0=end - start;
QString ti=QString::number(time0,10); //int转化为string,以在interval label上显示
// qDebug() << "etime - stime" << time;
ui->interval->setText(ti);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::timerUpdate()
{
QDateTime time =QDateTime::currentDateTime();
QString str=time.toString("yyyy-MM-dd dddd hh:mm:ss");
ui->timeLabel->setText(str);
}