#include <QMessageBox>
#include <QTableView>
#include <QStandardItemModel>
#include <QWidget>
#include <QMdiSubWindow>
#include <QInputDialog>
#include <QPalette>
#include "mainwindow.h"
#include "logindlg.h"
#include "scriptdlg.h"
#include "insert_mscdlg.h"
#include "delete_mscdlg.h"
#include "select_mscdlg.h"
#include "update_mscdlg.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("CDMA无线基站管理系统"));//设置窗口标题
setWindowIcon(QIcon("main.png"));//设置窗口光标
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);//设置窗口中央控件为mdiArea
mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);//设置自动具有横向滚动条
mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);//设置自动具有纵向滚动条
createActions();//建立行为的函数
createMunus();//建立菜单的函数
//设置主窗口背景颜色或图片
mdiArea->setBackground(Qt::NoBrush);
mdiArea->setStyleSheet("background-image: url(1.jpg);");//背景设置为1.jpt,子窗口大小不可调整
//mdiArea->setStyleSheet("background-color:blue;");//背景设置为蓝色
//mdiArea->setStyleSheet("border-image: url(1.jpg);");//背景设置为1.jpt,同时子窗口大小可调整
}
MainWindow::~MainWindow()
{
}
void MainWindow::createMunus()
{
adminMenu = menuBar()->addMenu(tr("管理"));//建立管理菜单
adminMenu->addAction(loginAction);//在管理菜单下加入登录行为
adminMenu->addAction(logoutAction);//在管理菜单下加入注销行为
adminMenu->addSeparator();//在管理菜单下加入一个分隔符
adminMenu->addAction(exitAction);//在管理菜单下加入退出
dataMenu = menuBar()->addMenu(tr("数据"));//建立数据菜单
dataMenu->addAction(insert_mscAction);//在数据菜单下加入添加MSC行为
dataMenu->addAction(delete_mscAction);//在数据菜单下加入删除MSC行为
dataMenu->addAction(select_mscAction);//在数据菜单下加入查询MSC行为
dataMenu->addAction(update_mscAction);//在数据菜单下加入修改MSC行为
dataMenu->addSeparator();//在数据菜单下加入分隔符
dataMenu->addAction(scriptAction);//在数据菜单下加入执行SQL脚本行为
windowMenu = menuBar()->addMenu(tr("窗口"));//建立窗口菜单
windowMenu->addAction(cascadeAction);//在窗口菜单下加入并列子窗口行为
windowMenu->addAction(tileAction);//在窗口菜单下加入层叠子窗口行为
helpMenu = menuBar()->addMenu(tr("帮助"));//建立帮助菜单
helpMenu->addAction(helpAction);//在帮助菜单下建立帮助行为
helpMenu->addSeparator();//在帮助菜单下加入一个分隔符
helpMenu->addAction(aboutAction);//在帮助菜单下加入关于行为
}
void MainWindow::createActions()
{
loginAction = new QAction(tr("登录"), this);
loginAction->setShortcut(tr("Ctrl+u"));
connect(loginAction, SIGNAL(triggered()), this, SLOT(on_login()));
logoutAction = new QAction(tr("注销"), this);
logoutAction->setShortcut(tr("Ctrl+b"));
connect(logoutAction, SIGNAL(triggered()), this, SLOT(on_logout()));
exitAction = new QAction(tr("退出"), this);
exitAction->setShortcut(tr("Ctrl+w"));
connect(exitAction, SIGNAL(triggered()), this, SLOT(on_exit()));
insert_mscAction = new QAction(tr("添加MSC"), this);
insert_mscAction->setShortcut(tr("Ctrl+f"));
insert_mscAction->setEnabled(false);
connect(insert_mscAction, SIGNAL(triggered()), this, SLOT(on_insert_msc()));
delete_mscAction = new QAction(tr("删除MSC"), this);
delete_mscAction->setShortcut(tr("Ctrl+i"));
delete_mscAction->setEnabled(false);
connect(delete_mscAction, SIGNAL(triggered()), this, SLOT(on_delete_msc()));
select_mscAction = new QAction(tr("查询MSC"), this);
select_mscAction->setShortcut(tr("Ctrl+l"));
select_mscAction->setEnabled(false);
connect(select_mscAction, SIGNAL(triggered()), this, SLOT(on_select_msc()));
update_mscAction = new QAction(tr("修改MSC"), this);
update_mscAction->setShortcut(tr("Ctrl+o"));
update_mscAction->setEnabled(false);
connect(update_mscAction, SIGNAL(triggered()), this, SLOT(on_update_msc()));
scriptAction = new QAction(tr("执行脚本"), this);
scriptAction->setShortcut(tr("Ctrl+p"));
scriptAction->setEnabled(false);
connect(scriptAction, SIGNAL(triggered()), this, SLOT(on_script()));
cascadeAction = new QAction(tr("层叠窗口"), this);
cascadeAction->setShortcut(tr("Ctrl+q"));
connect(cascadeAction, SIGNAL(triggered()), this, SLOT(cascadeSubWindows()));
tileAction = new QAction(tr("并列窗口"), this);
tileAction->setShortcut(tr("Ctrl+r"));
connect(tileAction, SIGNAL(triggered()), this, SLOT(tileSubWindows()));
helpAction = new QAction(tr("帮助"), this);
helpAction->setShortcut(tr("Ctrl+s"));
connect(helpAction, SIGNAL(triggered()), this, SLOT(on_help()));
aboutAction = new QAction(tr("关于"), this);
aboutAction->setShortcut(tr("Ctrl+t"));
connect(aboutAction, SIGNAL(triggered()), this, SLOT(on_about()));
}
void MainWindow::on_login()
{
//-------------弹出登录对话框------------------------------
loginDlg login(this);
login.exec();//以模式状态显示login对话框
if(login.islogin)//登录对话框中用户点击登录按钮
{
if (db.sql_connect(login.hostip.toStdString().data(),
login.userid.toStdString().data(),
login.passwd.toStdString().data(),
login.dbname.toStdString().data()) == 0)
{
QMessageBox::information(this, tr("提示"), tr("成功登录"));
scriptAction->setEnabled(true);//设置行为菜单状态为可用
insert_mscAction->setEnabled(true);
delete_mscAction->setEnabled(true);
select_mscAction->setEnabled(true);
update_mscAction->setEnabled(true);
db.sql_exec("set names utf8");//设置数据库连接为uft8字符集
}else
{
QMessageBox::information(this, "错误", db.get_error());//如果错误,弹出错误窗口
}
}
}
void MainWindow::on_logout()
{
scriptAction->setEnabled(false);//设置行为不可用
insert_mscAction->setEnabled(false);
delete_mscAction->setEnabled(false);
select_mscAction->setEnabled(false);
update_mscAction->setEnabled(false);
}
void MainWindow::on_exit()
{
close();//关闭主窗口
}
void MainWindow::on_script()
{
//-------------弹出执行脚本对话框------------------------------
scriptDlg script(this);
script.exec();//以模式状态显示执行脚本对话框
if(script.isok)//执行脚本对话框中用户点击执行按钮
{
script_Msg(script.SQL.trimmed());
}
}
void MainWindow::on_about()
{
QMessageBox::about(this, tr("关于数据管理系统"), tr("中国电信CDMA无线基站管理系统\n\n\n作者:朱景尧\n2014版权所有"));
}
void MainWindow::closeEvent(QCloseEvent *event)//窗口在close前,系统自动调用closeEvent函数
{
QMessageBox::StandardButton button = QMessageBox::question(this, tr("退出程序"),
QString(tr("是否退出?")),
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes)
{
event->accept(); //接受退出信号,程序退出
}
else
{
event->ignore(); //忽略退出信号,程序继续运行
}
}
//执行SQL语句,