欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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的文本内容为时间
}

Qt5 实现主窗口状态栏显示时间

补充: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);
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。