关于Qt:如何在状态栏中加入系统时间或程序运行时间?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Qt:如何在状态栏中加入系统时间或程序运行时间?相关的知识,希望对你有一定的参考价值。
想用Qt创建个窗口,然后在窗口的状态栏中加入系统时间,或者窗口运行时间……求解决方法啊~~~~
还有状态栏如何分栏
就是状态栏分成两部分,都左对齐。或者知道如何控制状态栏中信息的位置也可以。时间的加入已经解决了。
追答move()这个吗?
参考技术B 最简单的方法用空格占位 试试 参考技术C 添加两个状态栏追问不好使啊,新加的状态栏跑到上面menubar的位置去了,而且感觉就是在下面,两个状态栏也会覆盖
追答QStatusBar *statusbar = this->statusBar();
QLabel *statulabel = new QLabel("222");
QLabel *statulabel1 = new QLabel("333");
QLabel *statulabel2 = new QLabel(tr("系统时间:"));
QLabel *statulabel3 = new QLabel(tr("运行时间:"));
statusbar->addWidget(statulabel2);
statusbar->addWidget(statulabel);
statusbar->addWidget(statulabel3);
statusbar->addWidget(statulabel1);
希望能解决你的问题
Qt开发实现系统托盘,托盘菜单,托盘消息
概述
系统托盘就是在系统桌面底部特定的区域显示运行的程序。windows在任务栏状态区域,linux在布告栏区域。应用程序系统托盘功能,是比较普遍的功能,本篇将详细的介绍如何实现该功能。
演示Demo实现功能:
1.应用启动后,任务栏,系统托盘可以看到该程序。
2.点击右上角×关闭窗口,自动隐藏窗口,托盘可以看到该程序。
3.鼠标在托盘图标上右键,弹出"退出程序"菜单栏,并带有图标。
步骤:
1.工程中新建TrayDialog类,基类是QDialog,在界面上添加Text Browser控件和提示信息。
2.在TrayDialog.h头文件中添加#include <QtWidgets>包含文件
3.添加成员变量
QSystemTrayIcon m_systray,
信号槽响应函数
int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);
int OnExit();
重写closeEvent(QCloseEvent *event)函数,完整代码如下:
#pragma once #pragma execution_character_set("utf-8") #include <QDialog> #include <QtWidgets> #include "ui_TrayDialog.h" class TrayDialog : public QDialog { Q_OBJECT public: TrayDialog(QWidget *parent = Q_NULLPTR); ~TrayDialog(); private: void closeEvent(QCloseEvent *event); private slots: int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason); int OnExit(); private: Ui::TrayDialog ui; QSystemTrayIcon m_systray; };
4.在Qt Designer中添加Action,用于托盘右键退出程序。
5.构造函数TrayDialog(QWidget *parent)中添加如下代码:
//设置提示文字 m_systray.setToolTip("系统托盘演示程序"); // 设置托盘图标 m_systray.setIcon(QIcon(":/qtlearn/Resources/EXE.ico")); //托盘菜单项 QMenu * menu = new QMenu(); menu->addAction(ui.actionExit); m_systray.setContextMenu(menu); // 关联托盘事件 connect(&m_systray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(OnSystemTrayClicked(QSystemTrayIcon::ActivationReason))); //显示托盘 m_systray.show(); //托盘菜单响应 connect(ui.actionExit, SIGNAL(triggered()), this, SLOT(OnExit()));
6.关闭窗口事件响应函数
/************************************ @ Brief: 点击关闭窗口 @ Author: woniu201 @ Created: 2019/03/21 @ Return: ************************************/ void TrayDialog::closeEvent(QCloseEvent *event) { this->hide(); event->ignore(); }
7.双击/单击托盘应用程序响应函数
/************************************ @ Brief: 双击/单击托盘事件 @ Author: woniu201 @ Created: 2019/03/21 @ Return: ************************************/ int TrayDialog::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason) { if (reason == QSystemTrayIcon::Trigger || reason == QSystemTrayIcon::DoubleClick) { // 显示主窗口 this->showNormal(); } return 0; }
8.托盘右键退出响应函数
/************************************ @ Brief: 托盘菜单退出 @ Author: woniu201 @ Created: 2019/03/21 @ Return: ************************************/ int TrayDialog::OnExit() { QApplication::exit(0); return 0; }
9.启动后效果如下
以上是关于关于Qt:如何在状态栏中加入系统时间或程序运行时间?的主要内容,如果未能解决你的问题,请参考以下文章