服务端源码下载地址为:
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_OBJECTpublic: 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_timerEventm_timerId = startTimer(2000); //每2s检查一次窗口然后重写virtual void timerEvent(QTimerEvent* event); //每2s检测窗口这样就可以实现时间的走动了。
新闻热点
疑难解答