QT如果要进行网络编程首先需要在.pro中添加如下代码:QT += network
//logindlg.h #ifndef LOGINDLG_H #define LOGINDLG_H #include <QDialog> #include <QLabel> #include <QLineEdit> #include <QPushButton> class loginDlg : public QDialog { Q_OBJECT public: explicit loginDlg(QWidget *parent = 0); signals: public slots: private: QLabel *label1,*label2,*label3,*label4; QLineEdit *edit1,*edit2,*edit3,*edit4; QPushButton *btn1,*btn2; private slots: void btn1_click(); void btn2_click(); public: QString username; QString userpass; QString dbname; QString ipaddr; /*判断用户是否点击登录按钮*/ bool islogin; }; #endif // LOGINDLG_H
//mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QMenu> /*QMenuBar:菜单栏*/ #include <QMenuBar> #include <QAction> #include <QCloseEvent> #include <QMdiArea> #include "vmysql.h" class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); private: Vmysql *sqlhelper; QMenu * menu1; QMenu * menu2; QMenu * menu3; QMenu * menu4; QAction *login_in,*login_out,*quit1; QAction *addstation,*addstationcontrl,*addMSC; QAction *delstation,*delstationcontrl,*delMSC; QAction *sestation,*sestationcontrl,*seMSC; QAction *upstation,*upstationcontrl,*upMSC,*exscript; QAction *cascade1,*parallel; QAction *helper,*mabout; QMdiArea *mdiarea1; /*初始化菜单项*/ void initmenubar(); /*退出函数*/ void closeEvent(QCloseEvent *event); /*未登录设置所有SQL按钮不可用*/ void close_action(); /*设置所有SQL按钮可用*/ void open_action(); /*执行SQL操作*/ void exec_query(const char *strsql); /*判断SQL操作的类型*/ bool judge_sqltype(const char *strsql); /*创建显示view*/ void display_view(const char *actionname,QStandardItemModel *model); private slots: //登录事件 void login_inclick(); //注销事件 void login_outclick(); //退出事件 void quit_click(); /*添加基站*/ void add_station(); /*添加基站控制器*/ void add_stationcontrl(); /*添加MSC*/ void add_MSC(); /*删除基站*/ void del_station(); /*删除基站控制器*/ void del_stationcontrl(); /*删除MSC*/ void del_MSC(); /*查询基站*/ void sel_station(); /*查询基站控制器*/ void sel_stationcontrl(); /*查询MSC*/ void sel_MSC(); /*修改基站*/ void update_station(); /*修改基站控制器*/ void update_stationcontrl(); /*修改MSC*/ void update_MSC(); /*执行脚本*/ void exec_script(); /*层叠窗口*/ void cascade_window(); /*并列窗口*/ void parallel_window(); /*帮助*/ void helper_click(); /*关于*/ void mabout_click(); }; #endif // MAINWINDOW_H
//scriptdlg.h #ifndef SCRIPTDLG_H #define SCRIPTDLG_H #include <QDialog> #include <QLabel> #include <QTextEdit> #include <QPushButton> class ScriptDlg : public QDialog { Q_OBJECT public: explicit ScriptDlg(QWidget *parent = 0); QString strsql; bool isexec; signals: public slots: private: QLabel *label1; QTextEdit *tedit1; QPushButton *btn1,*btn2; private slots: void btn1_click(); void btn2_click(); }; #endif // SCRIPTDLG_H
//vmysql.h #ifndef VMYSQL_H #define VMYSQL_H /*mysql属于TCP/IP协议,所以需要使用socket, * windows下的socket与linux下不同,在windows.h文件下 * SOCKET listen_st;--windows下定义socket描述符*/ #include <windows.h> #include <C:/mysql/include/mysql.h> #include <QStandardItemModel> /*封装所有和mysql相关函数*/ class Vmysql { public: Vmysql(); ~Vmysql(); /*连接数据库*/ int sql_connect(const char *hostname,const char *username,const char *passwd,const char *dbname); /*断开数据库连接*/ void sql_disconnect(); /*执行SQL更新*/ int sql_exec(const char *strsql); /*执行SQL查询*/ int sql_query(const char *strsql,QStandardItemModel **model); /*错误信息*/ const char *ger_error(); private: MYSQL mysql1; MYSQL *connection; char errorbuf[1024]; }; #endif // VMYSQL_H