服务端源码下载地址为:
http://download.csdn.net/detail/qq78442761/9768662
状态栏是什么地方呢?
如下图所示:
那么在Qt里面,这个状态栏该怎么编写呢?
在mainwindow.h如下(程序源码打包,在文章的最顶端)
/*
* 南京邮电大学通达学院 计算机科学与技术(嵌入式)
* 142203 第六组实验
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QString>
#include <QSystemTrayIcon>
#include <QCloseEvent>
#include <QIcon>
#include <QFile>
#include <QFileDialog>
#include <QIODevice>
#include <QTextStream>
#include <QProcess>
#include <QStringList>
#include <QByteArray>
#include "connmysql.h"
#include "currtime.h"
#include "deleteDialogt.h"
#include "docxml.h"
#include "server.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void SetSystray(); //设置托盘程序
void closeEvent(QCloseEvent *event);
void SetBtn(bool state=false); //设置按钮状态
void setStatusBar(); //设置状态栏
//socket读取相关函数
public slots:
void slotCreateServer();
void updateServer(QString mes,char*, int length);
private slots:
int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);
int OnExit(); //退出程序
int OnOpen(); //打开程序
void LoginMysql(); //登录Mysql
void SelectUser(); //查询注册用户
void SelectRanking(); //查看排行榜
void DeleteUser(); //删除用户
void DeleteUserID(int ID); //删除用户ID
void SaveLog(); //生成日志文件
void RunMYSQLProcess(); //打开外部MYSQL程序
void RunLOGProcess(); //打开LOG日志文件
void disLinkMysql(); //断开数据库
void AboutPro(); //关于程序
private:
Ui::MainWindow *ui;
QLabel *statusLabel1; //状态栏运行时间图标
QLabel *statusLabel2; //状态栏MYSQL是否连接
QSystemTrayIcon *m_systray; //托盘程序
QMenu *SystemTrayMenu; //托盘菜单
ConnMysql *Mysql; //连接Mysql以及各种操作
QStringAndBool MysqlLinkValues; //Mysql连接状态
DeleteDialog *deleteDig; //删除对话框
QProcess m_Process; //打开外部程序
DOCXML *ProXML; //获取外部程序路径
Server *server; //Tcp服务器
int port; //端口
};
#endif // MAINWINDOW_H
可以看到这样的一个成员函数
void setStatusBar(); //设置状态栏
他在mainwindow.cpp如下:
void MainWindow::setStatusBar()
{
statusLabel1=new QLabel();
statusLabel2=new QLabel(tr("MySQL未连接"));
ui->statusBar->addWidget(statusLabel1);
ui->statusBar->addWidget(statusLabel2);
QString statusLabel1MSG="当前时间:";
QDateTime Currtime=QDateTime::currentDateTime();
QString CurrTimeStr=Currtime.toString("yyyy-MM-dd hh:mm:ss");
statusLabel1MSG.append(CurrTimeStr);
statusLabel1->setText(statusLabel1MSG);
}
所以,我们可以看到,Qt里面有个ui。那可以直接调用ui->statusBar->addWidget()这个函数来进行添加。
下面可以看到,这个时间是怎么怎么。
更具这样的逻辑就可以实现获取当前时间
QString statusLabel1MSG="当前时间:";
QDateTime Currtime=QDateTime::currentDateTime();
QString CurrTimeStr=Currtime.toString("yyyy-MM-dd hh:mm:ss");
statusLabel1MSG.append(CurrTimeStr);
statusLabel1->setText(statusLabel1MSG);
那么还有个问题。
这个时间不会动啊。。。
这个是此程序的一个缺陷。在此不此不在修改、
只提供如下的思路:
在这个头文件里面
#include <QTimerEvent>
重写这个函数
virtual void timerEvent(QTimerEvent* event); //每2s检测窗口
这里要用一个成员变量
int m_timerId; // 每个Timer有一个id
在构造函数里面初始化m_timerEvent
m_timerId = startTimer(2000); //每2s检查一次窗口
然后重写
virtual void timerEvent(QTimerEvent* event); //每2s检测窗口
这样就可以实现时间的走动了。