Qt5 实现主窗口状态栏显示时间
程序员文章站
2022-03-02 11:30:48
使用qt creator创建默认的窗体程序后,主窗口qmainwindow有statusbar状态栏,在此状态栏实时显示时间可以使用下面方法实现:mainwindow.h文件内容:#ifndef ma...
使用qt creator创建默认的窗体程序后,主窗口qmainwindow有statusbar状态栏,在此状态栏实时显示时间可以使用下面方法实现:
mainwindow.h文件内容:
#ifndef mainwindow_h #define mainwindow_h #include <qmainwindow> #include <mydialog.h> #include <qlabel> namespace ui { class mainwindow; } class mainwindow : public qmainwindow { q_object public: explicit mainwindow(qwidget *parent = 0); ~mainwindow(); private slots: void on_actionnew_window_triggered(); void time_update(); //时间更新槽函数,状态栏显示时间 private: ui::mainwindow *ui; qlabel *currenttimelabel; // 先创建一个qlabel对象 mydialog *mydialog; }; #endif // mainwindow_h
mainwindow.c文件内容:
#include "mainwindow.h" #include "ui_mainwindow.h" #include "mydialog.h" #include <qlabel> #include <qdatetime> #include <qtimer> #include <qstring> mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent), ui(new ui::mainwindow) { ui->setupui(this); currenttimelabel = new qlabel; // 创建qlabel控件 ui->statusbar->addwidget(currenttimelabel); //在状态栏添加此控件 qtimer *timer = new qtimer(this); timer->start(1000); //每隔1000ms发送timeout的信号 connect(timer, signal(timeout()),this,slot(time_update())); } mainwindow::~mainwindow() { delete ui; } void mainwindow::on_actionnew_window_triggered() { mydialog = new mydialog; mydialog->show(); } void mainwindow::time_update() { //[1] 获取时间 qdatetime current_time = qdatetime::currentdatetime(); qstring timestr = current_time.tostring( "yyyy年mm月dd日 hh:mm:ss"); //设置显示的格式 currenttimelabel->settext(timestr); //设置label的文本内容为时间 }
补充:qt 通过qlabel控件来显示实时日期时间
头文件需添加:
#include <qtimer>
构造函数中:
//日期/时间显示 qtimer *timer = new qtimer(this); connect(timer,signal(timeout()),this,slot(timerupdate())); timer->start(1000);
定义成员函数timerupdate()实现用户界面显示时间:
void userwindow::timerupdate() { qdatetime time = qdatetime::currentdatetime(); qstring str = time.tostring("yyyy-mm-dd hh:mm:ss dddd"); ui->datetime->settext(str); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。