我想获取RTC并通过标签或其他Qt对象显示在Ui上。
当我单击RTC_Get_Time_Button时,它将发送命令,然后固件将发送回列表,例如:
0x20年[15:8]年[7:0]月份[7:0]天[7:0]小时[7:0]分钟[7:0]秒[7:0] 0x00和Second [7:0]都是一个字节。
如果RTC是2013 Sep 24 15:15:15 当我单击RTC_Get_Time_Button时,它将返回 0x20 0x07 0x0d 0x09 0x18 0x0f 0x0f 0x0f
我想获取小时[7:0]分钟[7:0]秒[7:0]数据并显示在我的label_Time上 也许这个运行时钟hh:mm:ss 我的代码就像:
//MainWindow.h
#include <QMainWindow>
#include <QSerialPort>
#include <QDateTime>
#include <qprocess.h>
QT_BEGIN_NAMESPACE
class QLabel;
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
//void openSerialPort();
//void closeSerialPort();
void updateTime();//Update label_Time and
private:
void initActionsConnections();
Ui::MainWindow *m_ui = nullptr;
QLabel *m_status = nullptr;
SettingsDialog *m_settings = nullptr;
QSerialPort *m_serial = nullptr;
QTimer *timer;
QDateTime time;
QDateTime RTCtime;
QByteArray rsht;
QByteArray rgt;
int16_t RTC_Year_H;
int16_t RTC_Year_L;
int16_t RTC_Month;
int16_t RTC_Day;
int16_t RTC_Hour;
int16_t RTC_Minute;
int16_t RTC_Second;
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QTimer>
#include <QTime>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
m_ui(new Ui::MainWindow),
m_status(new QLabel),
m_serial(new QSerialPort(this))
{
m_ui->setupUi(this);
timer=new QTimer(this);
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(updateTime()));
timer->start(1000);
time = QDateTime::currentDateTime();
RTCtime=QDateTime::currentDateTime();
}
void MainWindow::updateTime()
{
m_ui->label_Time->setText(QTime::currentTime().toString("hh:mm:ss"));
m_ui->label_RTC_Time->setText(QTime::currentTime().toString("hh:mm:ss"));
}
void MainWindow::on_RTC_Get_Time_Button_clicked()
{
rgt.clear();
rgt.append(0xAA);
rgt.append(0x22);
rgt.append(static_cast<char>(0x00));
rgt.append(0xC3);
m_serial->write(rgt);
rsht.clear();
rsht=m_serial->readAll();
}
void MainWindow::on_RTC_Set_Host_Time_Button_clicked()
{
rsht[1]=RTC_Year_H;
rsht[2]=RTC_Year_L;
rsht[3]=RTC_Month;
rsht[4]=RTC_Day;
rsht[5]=RTC_Hour;
rsht[6]=RTC_Minute;
rsht[7]=RTC_Second;
m_ui->label_RTC_Time->setText(QTime(RTC_Hour, RTC_Minute, RTC_Second).toString("hh:mm:ss"));
}
我如何显示Hour [7:0]:Minute [7:0]:Second [7:0]喜欢
m_ui->label_Time->setText(QTime::currentTime().toString("hh:mm:ss"));
如何实现?
答案 0 :(得分:0)
如果日期和时间已经分开,则可以创建QTime
(QDate
)实例并将其转换为QString
。
m_ui->label_Time->setText(QTime(RTC_Hour, RTC_Minute, RTC_Second).toString("hh:mm:ss"));
或者您只能输出没有QTime
实例的字符串
m_ui->label_Time->setText(QString("%1:%2:%3").arg(RTC_Hour).arg(RTC_Minute).arg(RTC_Second));
我认为第一个变体更好,因为QTime