源码参考:

#include "CServerManager.h"

CServerManager* CServerManager::m_pInstance = NULL;
CServerManager::CServerManager(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags),
m_strServerIP("10.23.188.23"),
m_iServerPort(10001)
{
ui.setupUi(this);
initLayout();
} CServerManager* CServerManager::getInstance()
{
if ( NULL == m_pInstance)
{
m_pInstance = new CServerManager;
} return m_pInstance;
} CServerManager::~CServerManager()
{
} void CServerManager::initLayout()
{
ui.gridLayout_4->setColumnStretch(0, 1);
ui.gridLayout_4->setColumnStretch(1, 1);
ui.gridLayout_5->setColumnStretch(0, 1);
ui.gridLayout_5->setColumnStretch(1, 4);
ui.lineEditIP->setMaximumWidth(120);
ui.lineEditPort->setMaximumWidth(120);
ui.gridLayout->setColumnStretch(0 ,1);
ui.gridLayout->setColumnStretch(1 ,1); //IP端口初始化
ui.gridLayout->setContentsMargins(10, 10,10, 10);
ui.groupBoxNodeManage->setMaximumHeight(200);
ui.comboBoxConfig->setMinimumWidth(150);
ui.groupBoxDNS->setMaximumHeight(55);
ui.comboBoxIP->setMinimumWidth(120);
ui.mainDNSlineEdit->setMinimumWidth(120);
ui.spareDNSlineEdit->setMinimumWidth(120);
ui.mainDNSlineEdit->setMaximumWidth(120);
ui.spareDNSlineEdit->setMaximumWidth(120);
//正则表达
QRegExp rxIP(cstIpRegExp);
QValidator *pValidatorIP = new QRegExpValidator(rxIP, this); QRegExp rxPort(cstPortRegExp);
QValidator* pValidatorPort = new QRegExpValidator(rxPort, this); QRegExp rxDNSMain(cstIpRegExp);
QValidator *pValidatorDNSMain = new QRegExpValidator(rxDNSMain, this); QRegExp rxDNSSpace(cstIpRegExp);
QValidator *pValidatorDNSSpace = new QRegExpValidator(rxDNSSpace, this); //DNS输入设置
ui.mainDNSlineEdit->setValidator(pValidatorDNSMain);
ui.spareDNSlineEdit->setValidator(pValidatorDNSSpace); //设置服务器IP和端口号
ui.lineEditIP->setValidator(pValidatorIP);
ui.lineEditPort->setValidator(pValidatorPort); m_cApsServerManageClient = CApsServerManageClient::getInstance(); //界面表格初始化
m_pTableNetConfig = new QTableWidget(ui.groupBoxNetConfig);
m_pTableRounting = new QTableWidget(ui.groupBoxRoutingTable);
m_pTableNodeManage = new QTableWidget(ui.groupBoxNodeManage);
m_pTableSeverManage = new QTableWidget(ui.groupBoxSeverManage);
m_pTableConfigManage = new QTableWidget(ui.groupBoxConfigManage); //设置路由表格的右键弹出菜单
m_pActionAddRout = new QAction(tr("增加行"), ui.groupBoxRoutingTable);
m_pActionDelRout = new QAction(tr("删除"), ui.groupBoxRoutingTable);
m_pActionModefyRout = new QAction(tr("更新"), ui.groupBoxRoutingTable); //设置IP及端口
connect(ui.pushButtonInitConfig, SIGNAL(clicked()), this, SLOT(OnInitIPPort())); //设置网络配置表格的右键弹出菜单
m_pActionAddNetConfig = new QAction(tr("增加行"), ui.groupBoxNetConfig);
//m_pActionDelNetConfig = new QAction(tr("删除"), ui.groupBoxNetConfig);
m_pActionRestartNetConfig = new QAction(tr("重启"), ui.groupBoxNetConfig);
m_pActionStartNetConfig = new QAction(tr("启动"), ui.groupBoxNetConfig);
m_pActionStopNetConfig = new QAction(tr("停止"), ui.groupBoxNetConfig);
m_pActionModefyNetConfig = new QAction(tr("更新"), ui.groupBoxNetConfig); //设置节点服务器右键弹出菜单
m_pActionNodeManageAdd = new QAction(tr("增加行"), ui.groupBoxNodeManage);
m_pActionNodeManageDel = new QAction(tr("删除节点"), ui.groupBoxNodeManage);
m_pActionNodeManageRestart = new QAction(tr("重启节点"), ui.groupBoxNodeManage);
m_pActionNodeManageChangePwd = new QAction(tr("修改密码"), ui.groupBoxNodeManage);
m_pActionNodeManageModefy = new QAction(tr("添加节点"), ui.groupBoxNodeManage); //设置服务管理右键弹出菜单
m_pActionSeverManageStart = new QAction(tr("启动"), ui.groupBoxSeverManage);
m_pActionSeverManageStop = new QAction(tr("停止"), ui.groupBoxSeverManage);
m_pActionSeverManageRestart = new QAction(tr("重启"), ui.groupBoxSeverManage);
m_pActionSeverManageInstall = new QAction(tr("安装"), ui.groupBoxSeverManage);
m_pActionSeverManageUnload = new QAction(tr("卸载"), ui.groupBoxSeverManage);
m_pActionSeverManagePromotion = new QAction(tr("升级"), ui.groupBoxSeverManage);
m_pActionSeverManageAdd = new QAction(tr("增加行"), ui.groupBoxSeverManage); //设置配置文件表格右键弹出菜单
m_pActionUploadConfig = new QAction(tr("上传配置"), ui.groupBoxConfigManage);
m_pActionAddConfig = new QAction(tr("增加行"), ui.groupBoxConfigManage); QHeaderView* pVHeadViewNetConfig = m_pTableNetConfig->verticalHeader();
pVHeadViewNetConfig->setContextMenuPolicy(Qt::CustomContextMenu); QHeaderView* pVHeadViewRouting = m_pTableRounting->verticalHeader();
pVHeadViewRouting->setContextMenuPolicy(Qt::CustomContextMenu); QHeaderView* pVHeadViewNodeManage = m_pTableNodeManage->verticalHeader();
pVHeadViewNodeManage->setContextMenuPolicy(Qt::CustomContextMenu); QHeaderView* pVHeadViewSeverManage = m_pTableSeverManage->verticalHeader();
pVHeadViewSeverManage->setContextMenuPolicy(Qt::CustomContextMenu); m_pTableConfigManage->setContextMenuPolicy(Qt::CustomContextMenu); connect(pVHeadViewRouting, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnRoutingcustomContextMenuRequested(const QPoint&)));
connect(pVHeadViewNetConfig, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnNetworkcustomContextMenuRequested(const QPoint&)));
connect(pVHeadViewNodeManage, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnNodeManagecustomContextMenuRequested(const QPoint&)));
connect(pVHeadViewSeverManage, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnSeverManagecustomContextMenuRequested(const QPoint&)));
connect(m_pTableConfigManage, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnConfigManagecustomContextMenuRequested(const QPoint&))); connect(ui.comboBoxIP, SIGNAL(activated(int)), this, SLOT(OnUpdataComboxChange(int)));
connect(ui.comboBoxConfig, SIGNAL(activated(int)), this, SLOT(OnShowConfigManage(int))); connect(m_pActionAddRout, SIGNAL(triggered()), this, SLOT(OnAddRouting()));
connect(m_pActionDelRout, SIGNAL(triggered()), this, SLOT(OnDelRouting()));
connect(m_pActionModefyRout, SIGNAL(triggered()), this, SLOT(OnUpdataRoutingModefy())); connect(m_pActionAddNetConfig, SIGNAL(triggered()), this, SLOT(OnAddNetConfig()));
//connect(m_pActionDelNetConfig, SIGNAL(triggered()), this, SLOT(OnDelNetConfig()));
connect(m_pActionRestartNetConfig, SIGNAL(triggered()), this, SLOT(OnRestartNetConfig()));
connect(m_pActionStartNetConfig, SIGNAL(triggered()), this, SLOT(OnStartNetConfig()));
connect(m_pActionStopNetConfig, SIGNAL(triggered()), this, SLOT(OnStopNetConfig()));
connect(m_pActionModefyNetConfig, SIGNAL(triggered()), this, SLOT(OnModefyNetConfig())); connect(m_pActionNodeManageAdd, SIGNAL(triggered()), this, SLOT(OnNodeManageAdd()));
connect(m_pActionNodeManageDel, SIGNAL(triggered()), this, SLOT(OnNodeManageDel()));
connect(m_pActionNodeManageRestart, SIGNAL(triggered()), this, SLOT(OnNodeManageRestart()));
connect(m_pActionNodeManageChangePwd, SIGNAL(triggered()), this, SLOT(OnNodeManageChangePwd()));
connect(m_pActionNodeManageModefy, SIGNAL(triggered()), this, SLOT(OnNodeManageModefy())); connect(m_pActionSeverManageAdd, SIGNAL(triggered()), this, SLOT(OnSeverManageAdd()));
connect(m_pActionSeverManageStart, SIGNAL(triggered()), this, SLOT(OnSeverManageStart()));
connect(m_pActionSeverManageStop, SIGNAL(triggered()), this, SLOT(OnSeverManageStop()));
connect(m_pActionSeverManageRestart, SIGNAL(triggered()), this, SLOT(OnSeverManageRestart()));
connect(m_pActionSeverManageInstall, SIGNAL(triggered()), this, SLOT(OnSeverManageInstall()));
connect(m_pActionSeverManageUnload, SIGNAL(triggered()), this, SLOT(OnSeverManageUnload()));
connect(m_pActionSeverManagePromotion, SIGNAL(triggered()), this, SLOT(OnSeverManagePromotion())); connect(m_pActionAddConfig, SIGNAL(triggered()), this, SLOT(OnConfigManageAdd()));
connect(m_pActionUploadConfig, SIGNAL(triggered()), this, SLOT(OnConfigManageUpload())); connect(ui.pushButtonAddDNS, SIGNAL(clicked()), this, SLOT(OnAddDNS()));
connect(ui.pushButtonDelDNS, SIGNAL(clicked()), this, SLOT(OnDelDNS())); //开启线程
qRegisterMetaType<CGetClusterStat>("CGetClusterStat");
m_pCSeverThread = new CSeverThread; connect(m_pCSeverThread, SIGNAL(sigLogReturn(CGetClusterStat)), this, SLOT(OnGetDataThread(CGetClusterStat))); QFile file("./res/OMSCONFIG.xml");
if (!file.open(QIODevice::ReadOnly))
{
//QMessageBox::information(this, tr("提示"), tr("文件读取失败"));
return;
}
QByteArray data = file.readAll();
file.close();
QDomDocument doc;
QString strError;
if(!doc.setContent(data, false, &strError))
{
//QMessageBox::information(this, tr("提示"), tr("文件读取失败"));
return;
}
QDomElement docElem = doc.documentElement();
if (docElem.tagName() != QString("OMSCONFIG"))
{
//QMessageBox::information(this, tr("提示"), tr("文件读取失败"));
return;
} QDomElement docItem = docElem.firstChildElement(QString("SeverConfig"));
QDomElement itemFirstchild = docItem.firstChildElement(QString("node"));
while (!itemFirstchild.isNull())
{
m_strServerIP = itemFirstchild.attribute(QString("SeverConfigIP"));
m_iServerPort = itemFirstchild.attribute(QString("SeverConfigPort")).toInt();
itemFirstchild = itemFirstchild.nextSiblingElement("node");
}
ui.lineEditIP->setText(m_strServerIP);
ui.lineEditPort->setText(QString::number(m_iServerPort)); } void CServerManager::OnGetDataThread(CGetClusterStat cGetCluStat)
{
if (cGetCluStat.m_cOptRet.m_iOprCode == 0)
{
m_pmsgBox->close();
//QMessageBox::information(this, tr("提示"), tr("连接成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("配置连接成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
m_cGetCluStat = cGetCluStat;
}
else
{
m_pmsgBox->close();
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置连接失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("连接失败,请检查网络"));
return;
} // 获取节点列表
std::vector<CNodeInfo> vecNodeInfo = m_cGetCluStat.m_cNodeInfoVector;
std::vector<CNodeInfo>::const_iterator iteVecNodeInfo = vecNodeInfo.begin();
ui.comboBoxIP->clear();
for (; iteVecNodeInfo != vecNodeInfo.end(); iteVecNodeInfo++)
{
ui.comboBoxIP->addItem(QString::fromStdString(iteVecNodeInfo->m_sIPAddr));
}
ui.comboBoxIP->setCurrentIndex(0); //OnUpdataComboxChange(0);
//OnShowConfigManage(0); //保存IP 端口
QFile fileTmp("./res/OMSCONFIG.xml");
if(!fileTmp.open(QIODevice::ReadOnly))
{
//QMessageBox::information(this, tr("提示"), tr("文件操作失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置保存失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
// mesBox.exec();
fileTmp.close();
return;
} QByteArray data = fileTmp.readAll();
fileTmp.close(); QDomDocument doc;
QString strError;
if(!doc.setContent(data, false, &strError))
{
//QMessageBox::information(this, tr("提示"), tr("文件操作失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置保存失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
//mesBox.exec();
return;
}
QDomElement docElem = doc.documentElement();
if (docElem.tagName() != QString("OMSCONFIG"))
{
//QMessageBox::information(this, tr("提示"), tr("文件操作失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置保存失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
//mesBox.exec();
return;
} QDomElement docItem = docElem.firstChildElement(QString("SeverConfig"));
QDomElement itemFirstchild = docItem.firstChildElement(QString("node"));
while (!itemFirstchild.isNull())
{
itemFirstchild.removeAttribute(QString("SeverConfigIP"));
itemFirstchild.removeAttribute(QString("SeverConfigPort"));
itemFirstchild.setAttribute(QString("SeverConfigIP"), ui.lineEditIP->text());
itemFirstchild.setAttribute(QString("SeverConfigPort"), ui.lineEditPort->text());
itemFirstchild = itemFirstchild.nextSiblingElement("node");
} QFile file("./res/OMSCONFIG.xml");
if(!file.open(QIODevice::WriteOnly))
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置保存失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
//mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("文件操作失败"));
file.close();
return;
}
if(-1 == file.write(doc.toByteArray()))
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置保存失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
//mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("文件操作失败"));
file.close();
return;
}
else
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("配置保存成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
//mesBox.exec();
}
file.close();
} void CServerManager::resizeEvent(QResizeEvent * event)
{
initTableRouting();
initTableNetConfig();
initNodeManage();
initSeverManage();
initConfigManage();
} //表格初始化
void CServerManager::showEvent(QShowEvent *event)
{
initTableRouting();
initTableNetConfig();
initNodeManage();
initSeverManage();
initConfigManage();
}
/************************************************************************/
/*初始化表格 */
/************************************************************************/ //初始化网络配置表头
void CServerManager::initTableNetConfig()
{
m_pTableNetConfig->clear();
int iWidth = ui.groupBoxNetConfig->width();
int iHeight = ui.groupBoxNetConfig->height(); //设置表头
m_pTableNetConfig->setColumnCount(6);
m_pTableNetConfig->setHorizontalHeaderItem(0,new QTableWidgetItem(tr("名称")));
m_pTableNetConfig->setHorizontalHeaderItem(1,new QTableWidgetItem("IP"));
m_pTableNetConfig->setHorizontalHeaderItem(2,new QTableWidgetItem(tr("子网掩码")));
m_pTableNetConfig->setHorizontalHeaderItem(3,new QTableWidgetItem(tr("网关")));
m_pTableNetConfig->setHorizontalHeaderItem(4,new QTableWidgetItem(tr("启动方")));
m_pTableNetConfig->setHorizontalHeaderItem(5,new QTableWidgetItem(tr("是否启动")));
m_pTableNetConfig->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter); //自动适应大小
m_pTableNetConfig->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置代理
CLineEditDelegate* cLineEditDelegate = new CLineEditDelegate;
m_pTableNetConfig->setItemDelegateForColumn(1, cLineEditDelegate);
m_pTableNetConfig->setItemDelegateForColumn(2, cLineEditDelegate);
m_pTableNetConfig->setItemDelegateForColumn(3, cLineEditDelegate); QList<QString> lstComboBoxItemsbStart;
lstComboBoxItemsbStart.append(tr("是"));
lstComboBoxItemsbStart.append(tr("否"));
CComboBoxDelegate* cComboBoxDelegateBstart = new CComboBoxDelegate(lstComboBoxItemsbStart);
m_pTableNetConfig->setItemDelegateForColumn(5, cComboBoxDelegateBstart); QList<QString> lstComboBoxItemBootProto;
lstComboBoxItemBootProto.append("none");
lstComboBoxItemBootProto.append("static");
lstComboBoxItemBootProto.append("dhcp");
CComboBoxDelegate* cComboBoxDelegateBootProto = new CComboBoxDelegate(lstComboBoxItemBootProto);
m_pTableNetConfig->setItemDelegateForColumn(4, cComboBoxDelegateBootProto); //设置表格显示位置
m_pTableNetConfig->resize(iWidth - 30, iHeight - 30);
m_pTableNetConfig->move(15, 15);
} //路由配置表格初始化
void CServerManager::initTableRouting()
{
m_pTableRounting->clear();
int iWidth = ui.groupBoxRoutingTable->width();
int iHeight = ui.groupBoxRoutingTable->height(); //设置表头
m_pTableRounting->setColumnCount(4);
m_pTableRounting->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("目的网络")));
m_pTableRounting->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("网关")));
m_pTableRounting->setHorizontalHeaderItem(2, new QTableWidgetItem(tr("子网掩码")));
m_pTableRounting->setHorizontalHeaderItem(3, new QTableWidgetItem(tr("网卡名称"))); //自动适应大小
m_pTableRounting->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置代理
CLineEditDelegate* cLineEditDelegate = new CLineEditDelegate;
m_pTableRounting ->setItemDelegateForColumn(0, cLineEditDelegate);
m_pTableRounting ->setItemDelegateForColumn(1, cLineEditDelegate);
m_pTableRounting ->setItemDelegateForColumn(2, cLineEditDelegate); //设置表格显示位置
m_pTableRounting->resize(iWidth - 30, iHeight - 30);
m_pTableRounting->move(15, 15);
} //节点管理表格初始化
void CServerManager::initNodeManage()
{
int iWidth = ui.groupBoxNodeManage->width();
int iHeight = ui.groupBoxNodeManage->height(); //设置表头
m_pTableNodeManage->setColumnCount(6);
m_pTableNodeManage->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("名称")));
m_pTableNodeManage->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("IP")));
m_pTableNodeManage->setHorizontalHeaderItem(2, new QTableWidgetItem(tr("端口")));
m_pTableNodeManage->setHorizontalHeaderItem(3, new QTableWidgetItem(tr("用户名")));
m_pTableNodeManage->setHorizontalHeaderItem(4, new QTableWidgetItem(tr("密码")));
m_pTableNodeManage->setHorizontalHeaderItem(5, new QTableWidgetItem(tr("描述"))); //自动适应大小
m_pTableNodeManage->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置表格显示位置
m_pTableNodeManage->resize(iWidth - 30, iHeight - 30);
m_pTableNodeManage->move(15, 15); //设置代理
CLineEditDelegate* cLineEditDelegate = new CLineEditDelegate;
m_pTableNodeManage->setItemDelegateForColumn(1, cLineEditDelegate);
CLineEditDelegateNoEdit* cLineEditDelegateNoEdit = new CLineEditDelegateNoEdit;
m_pTableNodeManage->setItemDelegateForColumn(5, cLineEditDelegateNoEdit);
CLineEditDelegatePWD* cLineEditDelegatePWD = new CLineEditDelegatePWD;
m_pTableNodeManage->setItemDelegateForColumn(4, cLineEditDelegatePWD);
} //初始化服务器管理表格
void CServerManager::initSeverManage()
{
int iWidth = ui.groupBoxSeverManage->width();
int iHeight = ui.groupBoxSeverManage->height();
//设置表头
m_pTableSeverManage->setColumnCount(2);
m_pTableSeverManage->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("名称")));
m_pTableSeverManage->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("状态"))); //自动适应大小
m_pTableSeverManage->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置表格显示位置
m_pTableSeverManage->resize(iWidth - 30, iHeight - 30);
m_pTableSeverManage->move(15, 15); //设置代理
CLineEditDelegateNoEdit* cLineEditDelegateNoEditStat = new CLineEditDelegateNoEdit;
m_pTableSeverManage->setItemDelegateForColumn(1, cLineEditDelegateNoEditStat);
} //初始化配置文件表格
void CServerManager::initConfigManage()
{
int iWidth = ui.groupBoxConfigManage->width();
int iHeight = ui.groupBoxConfigManage->height(); //设置表头
m_pTableConfigManage->setColumnCount(3);
m_pTableConfigManage->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("名称")));
m_pTableConfigManage->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("值")));
m_pTableConfigManage->setHorizontalHeaderItem(2, new QTableWidgetItem(tr(" 描述"))); //自动适应大小
m_pTableConfigManage->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //设置表格显示位置
m_pTableConfigManage->resize(iWidth - 30, iHeight - 30);
m_pTableConfigManage->move(15, 15); //设置代理
CLineEditDelegateNoEdit* cLineEditDelegateNoEdit = new CLineEditDelegateNoEdit;
m_pTableConfigManage->setItemDelegateForColumn(2, cLineEditDelegateNoEdit);
} /************************************************************************/
/* 获取表格的数据 */
/************************************************************************/ //获取网络配置数据
int CServerManager::GetNetWorkConfigData()
{
m_cApsServerManageClient->GetNetWorkInfo(ui.comboBoxIP->currentText().toStdString(), m_cNodeNetWorkInfo);
if (m_cNodeNetWorkInfo.m_cOptRet.m_iOprCode != 0)
{
//QString strResult = QString::fromLocal8Bit(m_cNodeNetWorkInfo.m_cOptRet.m_sOprDesc.c_str());
//QMessageBox::information(this, tr("提示"), strResult);
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("获取网络配置数据失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return -1;
}
return 0;
} //获取路由表数据
int CServerManager::GetRoutingData()
{
m_cApsServerManageClient->GetRouteTable(ui.comboBoxIP->currentText().toStdString(), m_cGetRouteTableInfo);
if (m_cGetRouteTableInfo.m_cOptRet.m_iOprCode != 0)
{
//QMessageBox::information(this, tr("提示"), QString::fromStdString(m_cGetRouteTableInfo.m_cOptRet.m_sOprDesc));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("获取路由表数据失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return -1;
}
return 0;
} //获取服务管理数据
int CServerManager::GetSeverManageData()
{
m_cApsServerManageClient->GetServerNameList(ui.comboBoxIP->currentText().toStdString(), m_cGetAllServerList);
if (m_cGetAllServerList.m_cOptRet.m_iOprCode != 0)
{
//QMessageBox::information(this, tr("提示"), QString::fromStdString(m_cGetAllServerList.m_cOptRet.m_sOprDesc));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("获取服务数据失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return -1;
}
else
{
return 0;
}
} //获取配置文件列表
int CServerManager::GetConfigManageData()
{
m_cApsServerManageClient->GetNodeConfigList(ui.comboBoxIP->currentText().toStdString(), m_cGetMachineConfig);
if (m_cGetMachineConfig.m_cOptRet.m_iOprCode != 0)
{
//QMessageBox::information(this, tr("提示"), QString::fromStdString(m_cGetMachineConfig.m_cOptRet.m_sOprDesc));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("获取配置文件列表失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return -1;
}
return 0;
} /************************************************************************/
/* 显示每个表格数据 */
/************************************************************************/ //显示网络配置表格
void CServerManager::OnShowTableNetConfig()
{
//显示内容
int iRow = 0;
std::vector<CEthInfo> vecCEthInfo = m_cNodeNetWorkInfo.m_vEthInfo;
std::vector<CEthInfo>::const_iterator iteVecCEthInfo = vecCEthInfo.begin();
int icolumn = vecCEthInfo.size();
m_pTableNetConfig->setRowCount(icolumn + 1);
for(; iteVecCEthInfo != vecCEthInfo.end(); iteVecCEthInfo++)
{
m_pTableNetConfig->setItem(iRow, 0, new QTableWidgetItem(QString::fromStdString(iteVecCEthInfo->m_sEthName)));
m_pTableNetConfig->setItem(iRow, 1, new QTableWidgetItem(QString::fromStdString(iteVecCEthInfo->m_sIPAddr)));
m_pTableNetConfig->setItem(iRow, 2, new QTableWidgetItem(QString::fromStdString(iteVecCEthInfo->m_sNetMask)));
m_pTableNetConfig->setItem(iRow, 3, new QTableWidgetItem(QString::fromStdString(iteVecCEthInfo->m_sGateWay)));
m_pTableNetConfig->setItem(iRow, 4, new QTableWidgetItem(QString::fromStdString(iteVecCEthInfo->m_sBootProto)));
if (iteVecCEthInfo->m_bStarted)
{
m_pTableNetConfig->setItem(iRow, 5, new QTableWidgetItem(tr("是")));
}
else
{
m_pTableNetConfig->setItem(iRow, 5, new QTableWidgetItem(tr("否")));
}
iRow++; m_lstComboBoxItems.append(QString::fromStdString(iteVecCEthInfo->m_sEthName));
} //记录当前总行数
m_iNetConfigRowSum = m_pTableNetConfig->rowCount();
} //显示路由表格
void CServerManager::OnShowTableRouting()
{
//显示数据
int iRow = 0;
std::vector<CRouteInfo> vRouteInfo = m_cGetRouteTableInfo.m_cRouteTableInfo.m_vRouteInfo;
std::vector<CRouteInfo>::const_iterator iteVRouteInfo = vRouteInfo.begin(); int iRowCount = vRouteInfo.size();
m_pTableRounting->setRowCount(iRowCount + 1); for(; iteVRouteInfo != vRouteInfo.end(); iteVRouteInfo++)
{ QRegExp rxIP(cstIpRegExp);
QValidator *pValidatorIP = new QRegExpValidator(rxIP, this); if (iteVRouteInfo->m_sDestination == "default")
{
m_pTableRounting->setItem(iRow, 0, new QTableWidgetItem("0.0.0.0"));
}
else
{
m_pTableRounting->setItem(iRow, 0, new QTableWidgetItem(QString::fromStdString(iteVRouteInfo->m_sDestination)));
} if (iteVRouteInfo->m_sGateway == "default")
{
m_pTableRounting->setItem(iRow, 1, new QTableWidgetItem("0.0.0.0"));
}
else
{
m_pTableRounting->setItem(iRow, 1, new QTableWidgetItem(QString::fromStdString(iteVRouteInfo->m_sGateway)));
} m_pTableRounting->setItem(iRow, 2, new QTableWidgetItem(QString::fromStdString(iteVRouteInfo->m_sGenMask)));
m_pTableRounting->setItem(iRow, 3, new QTableWidgetItem(QString::fromStdString(iteVRouteInfo->m_sEthName)));
iRow++;
} //网卡名称设置代理
CComboBoxDelegate* cComboBoxDelegate = new CComboBoxDelegate(m_lstComboBoxItems);
m_pTableRounting->setItemDelegateForColumn(3, cComboBoxDelegate); //记录当前总行数
m_iRoutingRowSum = m_pTableRounting->rowCount();
} //显示节点管理表格
void CServerManager::OnShowTableNodeManage()
{
//显示数据
int iRow = 0;
std::vector<CNodeInfo> vNodeInfo = m_cGetCluStat.m_cNodeInfoVector;
std::vector<CNodeInfo>::const_iterator iteVNodeInfo = vNodeInfo.begin();
m_pTableNodeManage->setRowCount(vNodeInfo.size() + 1);
for(; iteVNodeInfo != vNodeInfo.end(); iteVNodeInfo++)
{
m_pTableNodeManage->setItem(iRow, 0, new QTableWidgetItem(QString::fromStdString("")));
m_pTableNodeManage->setItem(iRow, 1, new QTableWidgetItem(QString::fromStdString(iteVNodeInfo->m_sIPAddr)));
m_pTableNodeManage->setItem(iRow, 2, new QTableWidgetItem(QString::number(iteVNodeInfo->m_iSrvProxyPort)));
m_pTableNodeManage->setItem(iRow, 3, new QTableWidgetItem(QString::fromStdString("Root")));
m_pTableNodeManage->setItem(iRow, 4, new QTableWidgetItem(QString::fromStdString("******")));
m_pTableNodeManage->setItem(iRow, 5, new QTableWidgetItem(QString::fromStdString("")));
iRow++;
}
} //显示DNS配置数据
void CServerManager::OnShowTableDNS()
{
m_cApsServerManageClient->GetDNS(ui.comboBoxIP->currentText().toStdString(), m_cDnsInfo);
std::vector<std::string> vDnsAddr = m_cDnsInfo.m_vDnsAddr;
int iSizeVDns = vDnsAddr.size();
if (iSizeVDns == 0)
{
return;
}
else if (iSizeVDns == 1)
{
ui.mainDNSlineEdit->setText(QString::fromStdString(vDnsAddr.at(0)));
}
else if (iSizeVDns == 2)
{
ui.mainDNSlineEdit->setText(QString::fromStdString(vDnsAddr.at(0)));
ui.spareDNSlineEdit->setText(QString::fromStdString(vDnsAddr.at(1)));
}
} //显示服务管理表格
void CServerManager::OnShowTableSeverManage()
{
//显示数据
int iRow = 0;
std::vector<CServerInfo> vSeverInfo = m_cGetAllServerList.m_vServerList;
std::vector<CServerInfo>::const_iterator iteVSeverInfo = vSeverInfo.begin();
m_pTableSeverManage->setRowCount(vSeverInfo.size() + 1);
for(; iteVSeverInfo != vSeverInfo.end(); iteVSeverInfo++)
{
m_pTableSeverManage->setItem(iRow, 0, new QTableWidgetItem(QString::fromStdString(iteVSeverInfo->m_sServerName)));
int iCurStat = iteVSeverInfo->m_iCurStat;
switch(iCurStat)
{
case SERVER_STATE_START_FAILED:
{
m_pTableSeverManage->setItem(iRow, 1, new QTableWidgetItem(tr("启动失败")));
break;
}
case SERVER_STATE_INIT:
{
m_pTableSeverManage->setItem(iRow, 1, new QTableWidgetItem(tr("初始状态")));
break;
}
case SERVER_STATE_START:
{
m_pTableSeverManage->setItem(iRow, 1, new QTableWidgetItem(tr("启动")));
break;
}
case SERVER_STATE_ERR:
{
m_pTableSeverManage->setItem(iRow, 1, new QTableWidgetItem(tr("异常")));
break;
}
case SERVER_NOT_CONFIG:
{
m_pTableSeverManage->setItem(iRow, 1, new QTableWidgetItem(tr("未配置")));
break;
}
default:
break;
}
iRow++;
}
m_iSeverManageSum = m_pTableSeverManage->rowCount();
} //显示配置文件表格
void CServerManager::OnShowConfigManage(int index)
{
//获取数据
m_cApsServerManageClient->LoadConfig(ui.comboBoxIP->currentText().toStdString(), ui.comboBoxConfig->currentText().toStdString(), m_cConfigOption);
if (m_cConfigOption.m_cOptRet.m_iOprCode != 0)
{
//QMessageBox::information(this, tr("提示"), QString::fromStdString(m_cGetMachineConfig.m_cOptRet.m_sOprDesc));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("获取配置文件内容失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} //显示数据
int iRow = 0;
std::vector<CConfigOption> vConfigOption = m_cConfigOption.m_vConfigOption;
std::vector<CConfigOption>::const_iterator iteVconfigOption = vConfigOption.begin();
m_pTableConfigManage->setRowCount(vConfigOption.size());
for (; iteVconfigOption != vConfigOption.end(); iteVconfigOption++)
{
m_pTableConfigManage->setItem(iRow , 0, new QTableWidgetItem(QString::fromStdString(iteVconfigOption->m_sKeyName)));
m_pTableConfigManage->setItem(iRow , 1, new QTableWidgetItem(QString::fromStdString(iteVconfigOption->m_sKeyValue)));
m_pTableConfigManage->setItem(iRow , 2, new QTableWidgetItem(tr(iteVconfigOption->m_sKeyDes.c_str())));
iRow++;
}
m_iConfigManageSum = m_pTableConfigManage->rowCount();
} //将配置文件列表传到ComboBox
void CServerManager::SetConfigManageComboBoxList()
{
if (GetConfigManageData() == -1)
{
return;
}
std::vector<std::string> vConfig = m_cGetMachineConfig.m_vConfig;
std::vector<std::string>::const_iterator iteVConfigManage = vConfig.begin();
ui.comboBoxConfig->clear();
for(; iteVConfigManage != vConfig.end(); iteVConfigManage++)
{
ui.comboBoxConfig->addItem(QString::fromStdString(*iteVConfigManage));
}
ui.comboBoxConfig->setCurrentIndex(0);
} //更换IP节点后刷新表格数据
void CServerManager::OnUpdataComboxChange(int index)
{
if (0 == GetNetWorkConfigData())
{
OnShowTableNetConfig();
}
if(0 == GetRoutingData())
{
OnShowTableRouting();
}
OnShowTableNodeManage(); //获取数据后台未提供返回值,无法判断
if (0 == GetSeverManageData())
{
OnShowTableSeverManage(); //后台反馈较慢
}
SetConfigManageComboBoxList();
OnShowTableDNS();
} /************************************************************************/
/* 表格右键功能实现 */
/************************************************************************/ //路由配置表右键菜单功能
void CServerManager::OnRoutingcustomContextMenuRequested(const QPoint& point)
{
//限定鼠标右击位置
int iCurrentRow = m_pTableRounting->verticalHeader()->logicalIndexAt(point);
if (iCurrentRow == -1)
{
return;
} m_pTableRounting->selectRow(iCurrentRow); QMenu* menuRouting = new QMenu(this);
menuRouting->addAction(m_pActionAddRout);
menuRouting->addAction(m_pActionDelRout);
menuRouting->addAction(m_pActionModefyRout);
menuRouting->exec(QCursor::pos());
} //网络配置表右键菜单功能
void CServerManager::OnNetworkcustomContextMenuRequested(const QPoint& point)
{
//限定鼠标右击位置
int iCurrentRow = m_pTableNetConfig->verticalHeader()->logicalIndexAt(point);
if (iCurrentRow == -1)
{
return;
} m_pTableNetConfig->selectRow(iCurrentRow); QMenu* menuNetConfig = new QMenu(this);
menuNetConfig->addAction(m_pActionAddNetConfig);
//menuNetConfig->addAction(m_pActionDelNetConfig);
menuNetConfig->addAction(m_pActionRestartNetConfig);
menuNetConfig->addAction(m_pActionStartNetConfig);
menuNetConfig->addAction(m_pActionStopNetConfig);
menuNetConfig->addAction(m_pActionModefyNetConfig); menuNetConfig->exec(QCursor::pos());
} //节点服务右键菜单功能
void CServerManager::OnNodeManagecustomContextMenuRequested(const QPoint& point)
{
//限定鼠标右击位置
int iCurrentRow = m_pTableNodeManage->verticalHeader()->logicalIndexAt(point);
if (iCurrentRow == -1)
{
return ;
} m_pTableNodeManage->selectRow(iCurrentRow); QMenu* menuNodeMange = new QMenu(this);
menuNodeMange->addAction(m_pActionNodeManageModefy);
menuNodeMange->addAction(m_pActionNodeManageDel);
menuNodeMange->addAction(m_pActionNodeManageRestart);
menuNodeMange->addAction(m_pActionNodeManageChangePwd);
menuNodeMange->addAction(m_pActionNodeManageAdd); menuNodeMange->exec(QCursor::pos());
} //服务管理右键功能添加
void CServerManager::OnSeverManagecustomContextMenuRequested(const QPoint& point)
{
//限定鼠标右击位置
int iCurrentRow = m_pTableSeverManage->verticalHeader()->logicalIndexAt(point);
if (iCurrentRow == -1)
{
return ;
} m_pTableSeverManage->selectRow(iCurrentRow); QMenu* menuSeverMange = new QMenu(this);
menuSeverMange->addAction(m_pActionSeverManageAdd);
menuSeverMange->addAction(m_pActionSeverManageStart);
menuSeverMange->addAction(m_pActionSeverManageStop);
menuSeverMange->addAction(m_pActionSeverManageRestart);
menuSeverMange->addAction(m_pActionSeverManageInstall);
menuSeverMange->addAction(m_pActionSeverManagePromotion);
menuSeverMange->addAction(m_pActionSeverManageUnload); menuSeverMange->exec(QCursor::pos()); } //配置管理右键功能添加
void CServerManager::OnConfigManagecustomContextMenuRequested(const QPoint& point)
{
QMenu* menuConfigMange = new QMenu(ui.groupBoxConfigManage);
menuConfigMange->addAction(m_pActionUploadConfig);
menuConfigMange->addAction(m_pActionAddConfig);
menuConfigMange->exec(QCursor::pos());
} //添加路由配置表行
void CServerManager::OnAddRouting()
{
//添加新行
QModelIndex modelIndex = m_pTableRounting->currentIndex();
int iRow = modelIndex.row() + 1; m_pTableRounting->insertRow(iRow);
m_pTableRounting->setItem(iRow, 0, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(iRow, 1, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(iRow, 2, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(iRow, 3, new QTableWidgetItem("")); //记录当前总行数
m_iRoutingRowSum = m_pTableRounting->rowCount();
} //添加网络配置
void CServerManager::OnAddNetConfig()
{
//添加新行
QModelIndex modelIndex = m_pTableNetConfig->currentIndex();
int iRow = modelIndex.row() + 1; m_pTableNetConfig->insertRow(iRow);
m_pTableNetConfig->setItem(iRow, 0, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(iRow, 1, new QTableWidgetItem("0.0.0.0"));
m_pTableNetConfig->setItem(iRow, 2, new QTableWidgetItem("0.0.0.0"));
m_pTableNetConfig->setItem(iRow, 3, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(iRow, 4, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(iRow, 5, new QTableWidgetItem("")); //记录当前总行数
m_iNetConfigRowSum = m_pTableRounting->rowCount();
} //删除网络配置
void CServerManager::OnDelNetConfig()
{
//std::string sEthName;
CMSOprResult cOptRet; QModelIndex modelIndex = m_pTableNetConfig->currentIndex();
int iRow = modelIndex.row(); QList<QTableWidgetItem *> lstItem = m_pTableNetConfig->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemEthName = m_pTableNetConfig->item(iRow, 0); if (twItemEthName == NULL)
{
//QMessageBox::information(this, tr("提示"), tr("网络配置删除失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("网络配置删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strEthName = twItemEthName->text();
//sEthName = strEthName.toStdString(); QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setButtonText(QMessageBox::Ok, tr("确定"));
msgBox.setButtonText(QMessageBox::Cancel, tr("取消")); int ret = msgBox.exec(); switch (ret)
{
case QMessageBox::Ok:
{
m_cApsServerManageClient->DeleteNetwork(ui.comboBoxIP->currentText().toStdString(), strEthName.toStdString(), cOptRet);
if (cOptRet.m_iOprCode == 0)
{
m_pTableNetConfig->removeRow(iRow);
//记录当前总行数
m_iNetConfigRowSum = m_pTableNetConfig->rowCount();
//QMessageBox::information(this, tr("提示"), tr("网络配置删除成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("网络配置删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("网络配置删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("网络配置删除失败"));
}
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
} //删除行
else
{
QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setButtonText(QMessageBox::Ok, tr("确定"));
msgBox.setButtonText(QMessageBox::Cancel, tr("取消"));
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
m_pTableNetConfig->removeRow(iRow); //记录当前总行数
m_iNetConfigRowSum = m_pTableNetConfig->rowCount(); QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("当前行删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
// QMessageBox::information(this, tr("提示"), tr("当前行删除成功"));
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
}
//删除所有行时自动添加一行空行
if (m_iNetConfigRowSum == 0)
{
m_pTableNetConfig->setRowCount(1);
m_pTableNetConfig->setItem(0, 0, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(0, 1, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(0, 2, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(0, 3, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(0, 4, new QTableWidgetItem(""));
m_pTableNetConfig->setItem(0, 5, new QTableWidgetItem(""));
}
} //重启网络
void CServerManager::OnRestartNetConfig()
{
CMSOprResult cOptRet; QModelIndex mIndex = m_pTableNetConfig->currentIndex();
int iRow = mIndex.row(); QList<QTableWidgetItem *> lstItem = m_pTableNetConfig->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableNetConfig->item(iRow, 0);
QTableWidgetItem* twItemIP = m_pTableNetConfig->item(iRow, 1); if (twItemIP == NULL || twItemName == NULL)
{
//QMessageBox::information(this, tr("提示"), tr("重启失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("重启网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strName = twItemName->text();
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} m_cApsServerManageClient->ReStartNetwork(strIp.toStdString(), strName.toStdString(), cOptRet); if(cOptRet.m_iOprCode == 0)
{
//QMessageBox::information(this, tr("提示"), tr("重启成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("重启网络成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
//QMessageBox::information(this, tr("提示"), tr("重启失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("重启网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
}
else
{
//QMessageBox::information(this, tr("提示"), tr("无此节点,重启失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("重启网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
} //启动网络
void CServerManager::OnStartNetConfig()
{
QModelIndex mIndex = m_pTableNetConfig->currentIndex();
int iRow = mIndex.row();
CMSOprResult cOptRet;
QList<QTableWidgetItem *> lstItem = m_pTableNetConfig->selectedItems();
if(!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableNetConfig->item(iRow, 0);
QTableWidgetItem* twItemIP = m_pTableNetConfig->item(iRow, 1); if (twItemIP == NULL || twItemName == NULL)
{
//QMessageBox::information(this, tr("提示"), tr("启动失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("启动网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strName = twItemName->text();
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} m_cApsServerManageClient->StartNetwork(strIp.toStdString(), strName.toStdString(), cOptRet); if(cOptRet.m_iOprCode == 0)
{
//QMessageBox::information(this, tr("提示"), tr("启动成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("启动网络成功"), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("启动网络失败"), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("启动失败"));
}
}
else
{
//QMessageBox::information(this, tr("提示"), tr("无此节点,启动失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("启动网络失败"), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
}
//停止网络
void CServerManager::OnStopNetConfig()
{
QModelIndex mIndex = m_pTableNetConfig->currentIndex();
int iRow = mIndex.row(); CMSOprResult cOptRet;
QList<QTableWidgetItem *> lstItem = m_pTableNetConfig->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableNetConfig->item(iRow, 0);
QTableWidgetItem* twItemIP = m_pTableNetConfig->item(iRow, 1); if (twItemIP == NULL || twItemName == NULL)
{
//QMessageBox::information(this, tr("提示"), tr("停止失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("启动网络失败"), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strName = twItemName->text();
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} m_cApsServerManageClient->StopNetwork(strIp.toStdString(), strName.toStdString(), cOptRet); if(cOptRet.m_iOprCode == 0)
{
//QMessageBox::information(this, tr("提示"), tr("停止成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("停止网络成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("停止网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("停止失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("停止网络失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,停止失败"));
}
} //网络配置更新
void CServerManager::OnModefyNetConfig()
{
QModelIndex mIndex = m_pTableNetConfig->currentIndex();
int iRow = mIndex.row(); CEthInfo cEthInfo;
CMSOprResult cOptRet;
QList<QTableWidgetItem*> lstItem = m_pTableNetConfig->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableNetConfig->item(iRow, 0);
QTableWidgetItem* twItemIP = m_pTableNetConfig->item(iRow, 1);
QTableWidgetItem* twItemNetMask = m_pTableNetConfig->item(iRow, 2);
QTableWidgetItem* twItemGateWay = m_pTableNetConfig->item(iRow, 3);
QTableWidgetItem* twItemBootProto = m_pTableNetConfig->item(iRow, 4);
QTableWidgetItem* twItemIsBoot = m_pTableNetConfig->item(iRow, 5); if (twItemName == NULL || twItemIP == NULL || twItemNetMask ==NULL ||twItemGateWay == NULL || twItemBootProto == NULL || twItemIsBoot == NULL)
{
//QMessageBox::information(this, tr("提示"), tr("无此节点,停止失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("网络配置更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strName = twItemName->text();
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} QString strNetMask = twItemNetMask->text();
QString strGateWay = twItemGateWay->text();
QString strBootProto = twItemBootProto->text();
QString strIsBoot = twItemIsBoot->text(); cEthInfo.m_sEthName = strName.toStdString();
cEthInfo.m_sIPAddr = strIp.toStdString();
cEthInfo.m_sNetMask = strNetMask.toStdString();
cEthInfo.m_sGateWay = strGateWay.toStdString();
cEthInfo.m_sBootProto = strBootProto.toStdString();
if (strIsBoot == tr("是"))
{
cEthInfo.m_bStarted = true;
}
else
{
cEthInfo.m_bStarted = false;
}
m_cApsServerManageClient->ConfigNetWork(ui.comboBoxIP->currentText().toStdString(), cEthInfo, cOptRet);
if (cOptRet.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("网络配置更新成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"),tr("网络配置更新成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("网络配置更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"),tr("网络配置更新失败"));
} }
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("网络配置更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"),tr("缺少数据,网络配置更新失败"));
}
} //节点添加
void CServerManager::OnNodeManageAdd()
{
//添加新行
QModelIndex modelIndex = m_pTableNodeManage->currentIndex();
int iRow = modelIndex.row() + 1; m_pTableNodeManage->insertRow(iRow);
m_pTableNodeManage->setItem(iRow, 0, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(iRow, 1, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(iRow, 2, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(iRow, 3, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(iRow, 4, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(iRow, 5, new QTableWidgetItem("")); //记录当前总行数
m_iNodeManageSum = m_pTableNodeManage->rowCount();
} //删除节点服务
void CServerManager::OnNodeManageDel()
{
CMSOprResult cOptRet;
QModelIndex modelIndex = m_pTableNodeManage->currentIndex();
int iRow = modelIndex.row(); QList<QTableWidgetItem *> lstItem = m_pTableNodeManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemIP = m_pTableNodeManage->item(iRow, 1);
if (twItemIP == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("节点删除失败"));
return;
}
QString strIp = twItemIP->text(); QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
if(-1 == OnCheckIP(strIp.toStdString()))
{
m_pTableNodeManage->removeRow(iRow);
//记录当前总行数
m_iNodeManageSum = m_pTableNodeManage->rowCount();
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("当前行删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("节点删除成功"));
return;
}
m_cApsServerManageClient->DelClusterNode(strIp.toStdString(), cOptRet);
if (cOptRet.m_iOprCode == 0)
{
m_pTableNodeManage->removeRow(iRow);
//记录当前总行数
m_iNodeManageSum = m_pTableNodeManage->rowCount();
//QMessageBox::information(this, tr("提示"), tr("节点删除成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("节点删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("节点删除失败"));
}
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
} //删除行
else
{
QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
m_pTableNodeManage->removeRow(iRow); //记录当前总行数
m_iNodeManageSum = m_pTableNodeManage->rowCount();
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("当前行删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("当前行删除成功"));
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
} //删除所有行时自动添加一行空行
if (m_iNodeManageSum == 0)
{
m_pTableNodeManage->setRowCount(1);
m_pTableNodeManage->setItem(0, 0, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(0, 1, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(0, 2, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(0, 3, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(0, 4, new QTableWidgetItem(""));
m_pTableNodeManage->setItem(0, 5, new QTableWidgetItem(""));
}
} //节点重启
void CServerManager::OnNodeManageRestart()
{
QModelIndex modelIndex = m_pTableNodeManage->currentIndex();
int iRow = modelIndex.row();
CMSOprResult cOptRet;
QList<QTableWidgetItem *> lstItem = m_pTableNodeManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemIP = m_pTableNodeManage->item(iRow, 1);
if (twItemIP == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("重启失败"));
return;
}
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
} m_cApsServerManageClient->RebootMachine(strIp.toStdString(), cOptRet); if(cOptRet.m_iOprCode == 0)
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("节点重启成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("重启成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("重启失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,重启失败"));
}
} //修改节点密码
void CServerManager::OnNodeManageChangePwd()
{ } //更新新的节点服务
void CServerManager::OnNodeManageModefy()
{
CMSOprResult cOptRet; QModelIndex mIndex = m_pTableNodeManage->currentIndex();
int iRow = mIndex.row(); QList<QTableWidgetItem *> lstItem = m_pTableNodeManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem *twItemName = m_pTableNodeManage->item( iRow, 0);
QTableWidgetItem *twItemIP = m_pTableNodeManage->item( iRow, 1);
QTableWidgetItem *twItemPort = m_pTableNodeManage->item( iRow, 2);
QTableWidgetItem *twItemPwd = m_pTableNodeManage->item( iRow, 4);
QTableWidgetItem *twItemUserName = m_pTableNodeManage->item(iRow, 3); if (twItemName == NULL || twItemIP == NULL || twItemPort == NULL || twItemPwd == NULL || twItemUserName == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("添加失败,请输入数据"));
return;
}
QString strPwd = twItemPwd->data(Qt::UserRole).toString(); QString strName = twItemName->text();
QString strIp = twItemIP->text(); if(-1 == OnCheckIP(strIp.toStdString()))
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
// QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
return;
}
QString strPort = twItemPort->text();
QString strUserName = twItemUserName->text();
if (!(strUserName == "Root" || strUserName == "root"))
{
QMessageBox::information(this, tr("提示"), tr("用户名有误"));
return;
}
//符合要求时调用后台
//if (!strName.isEmpty() && !strIp.isEmpty() && !strPort.isEmpty() && !strUserName.isEmpty() && !strPwd.isEmpty())
//{
m_cApsServerManageClient->ConfigNodeRootPwd(strIp.toStdString(), strPwd.toStdString(), cOptRet);
if (cOptRet.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("密码验证失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("密码验证失败"));
}
else
{
CMSOprResult cOptRetAddNode;
m_cApsServerManageClient->AddClusterNode(strName.toStdString(), strIp.toStdString(), strPort.toUInt(), cOptRetAddNode);
if (cOptRetAddNode.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点操作失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("节点操作失败"));
}
else
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("节点操作成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("节点操作成功"));
}
}
//}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("节点操作失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
// QMessageBox::information(this, tr("提示"), tr("没有数据,操作失败"));
}
} //更新路由表配置
void CServerManager::OnUpdataRoutingModefy()
{
CRouteInfo cRoutInfo;
CMSOprResult cOptRet; QList<QTableWidgetItem *> lstItem = m_pTableRounting->selectedItems();
if (lstItem.size() == 4)
{
QString strDestination = lstItem.at(0)->text();
if (strDestination == "0.0.0.0")
{
cRoutInfo.m_sDestination = "default";
}
else
{
cRoutInfo.m_sDestination = strDestination.toStdString();
}
QString strGateway = lstItem.at(1)->text();
if (strDestination == "0.0.0.0")
{
cRoutInfo.m_sGateway = "default";
}
else
{
cRoutInfo.m_sGateway = strGateway.toStdString();
}
QString strGenMask = lstItem.at(2)->text();
cRoutInfo.m_sGenMask = strGenMask.toStdString();
QString strEthName = lstItem.at(3)->text();
cRoutInfo.m_sEthName = strEthName.toStdString();
//符合要求时调用后台
//if (!strDestination.isEmpty() && !strEthName.isEmpty() && !strGateway.isEmpty() && !strGenMask.isEmpty())
//{
m_cApsServerManageClient->AddRouteInfo(ui.comboBoxIP->currentText().toStdString(), cRoutInfo, cOptRet);
if (cOptRet.m_iOprCode == 0)
{
//QMessageBox::information(this, tr("提示"), tr("路由配置更新成功"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("路由配置更新成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("路由配置更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("路由配置更新失败"));
}
//}
/*else
{
QMessageBox::information(this, tr("提示"), tr("缺少数据,路由配置更新失败"));
}*/
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("路由配置更新失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("缺少数据,路由配置更新失败"));
}
} //调用后台服务删除路由节点
void CServerManager::OnDelRouting()
{
CRouteInfo cRoutInfo;
CMSOprResult cOptRet;
bool bHasUsedSeverFunction = false;
QModelIndex modelIndex = m_pTableRounting->currentIndex();
int iRow = modelIndex.row(); QList<QTableWidgetItem *> lstItem = m_pTableRounting->selectedItems();
if (!lstItem.isEmpty())
{
if (lstItem.size() == 4)
{
QString strDestination = lstItem.at(0)->text();
if (strDestination == "0.0.0.0")
{
cRoutInfo.m_sDestination = "default";
}
else
{
cRoutInfo.m_sDestination = strDestination.toStdString();
}
QString strGateway = lstItem.at(1)->text();
if (strDestination == "0.0.0.0")
{
cRoutInfo.m_sGateway = "default";
}
else
{
cRoutInfo.m_sGateway = strGateway.toStdString();
}
QString strGenMask = lstItem.at(2)->text();
cRoutInfo.m_sGenMask = strGenMask.toStdString();
QString strEthName = lstItem.at(3)->text();
cRoutInfo.m_sEthName = strEthName.toStdString();
//符合要求时调用后台
//if (!strDestination.isEmpty() && !strEthName.isEmpty() && !strGateway.isEmpty() && !strGenMask.isEmpty())
//{
bHasUsedSeverFunction = true; QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
m_cApsServerManageClient->DelRouteInfo(ui.comboBoxIP->currentText().toStdString(), cRoutInfo, cOptRet);
if (cOptRet.m_iOprCode == 0)
{
m_pTableRounting->removeRow(iRow);
//记录当前总行数
m_iRoutingRowSum = m_pTableRounting->rowCount();
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("路由配置删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("路由配置删除成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("路由配置删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("路由配置删除失败"));
}
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
//}
} } //删除行
if(!bHasUsedSeverFunction)
{
QMessageBox msgBox(this);
msgBox.setWindowTitle(tr("提示"));
msgBox.setText(QString(tr("正在删除第%1行,请确认")).arg(QString::number(iRow + 1)));
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
m_pTableRounting->removeRow(iRow); //记录当前总行数
m_iRoutingRowSum = m_pTableRounting->rowCount();
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("当前行删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("当前行删除成功"));
break;
}
case QMessageBox::Cancel:
{
break;
}
default:
break;
}
} //删除所有行时自动添加一行空行
if (m_iRoutingRowSum == 0)
{
m_pTableRounting->setRowCount(1);
m_pTableRounting->setItem(0, 0, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(0, 1, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(0, 2, new QTableWidgetItem("0.0.0.0"));
m_pTableRounting->setItem(0, 3, new QTableWidgetItem(""));
}
} //服务管理添加行
void CServerManager::OnSeverManageAdd()
{
QModelIndex indexRow = m_pTableSeverManage->currentIndex();
int iRow = indexRow.row() + 1; m_pTableSeverManage->insertRow(iRow);
m_pTableSeverManage->setItem(iRow,0, new QTableWidgetItem(""));
m_pTableSeverManage->setItem(iRow,1, new QTableWidgetItem("")); m_iSeverManageSum = m_pTableSeverManage->rowCount();
} //服务管理启动
void CServerManager::OnSeverManageStart()
{
QModelIndex mIndex = m_pTableSeverManage->currentIndex();
int iRow = mIndex.row(); CMSOprResult cOptRet;
QList<QTableWidgetItem *> lstItem = m_pTableSeverManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableSeverManage->item(iRow, 0); if (twItemName == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务启动失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务启动失败"));
return;
} QString strSeverManageName = twItemName->text();
if(!strSeverManageName.isEmpty())
{
m_cApsServerManageClient->StartServer(ui.comboBoxIP->currentText().toStdString(), strSeverManageName.toStdString(), cOptRet);
if (cOptRet.m_iOprCode == 0)
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("服务启动成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
GetSeverManageData();
OnShowTableSeverManage();
//QMessageBox::information(this, tr("提示"), tr("服务启动成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务启动失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务启动失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务启动失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,服务启动失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务启动失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,服务启动失败"));
}
} //服务管理停止
void CServerManager::OnSeverManageStop()
{
QModelIndex mIndex = m_pTableSeverManage->currentIndex();
int iRow = mIndex.row(); CMSOprResult cOptRet;
QList<QTableWidgetItem* > lstItem = m_pTableSeverManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableSeverManage->item(iRow, 0);
if (twItemName == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务停止失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务停止失败"));
return;
}
QString strSeverManageName = twItemName ->text();
m_cApsServerManageClient->StopServer(ui.comboBoxIP->currentText().toStdString(), strSeverManageName.toStdString(), cOptRet);
if (cOptRet.m_iOprCode == 0)
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("服务停止成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
GetSeverManageData();
OnShowTableSeverManage();
//QMessageBox::information(this, tr("提示"), tr("服务停止成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务停止失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务停止失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务停止失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,服务停止失败"));
}
} //服务管理重启
void CServerManager::OnSeverManageRestart()
{
QModelIndex mIndex = m_pTableSeverManage->currentIndex();
int iRow = mIndex.row(); CMSOprResult cOptRet;
QList<QTableWidgetItem* > lstItem = m_pTableSeverManage->selectedItems();
if (!lstItem.isEmpty())
{
QTableWidgetItem* twItemName = m_pTableSeverManage->item(iRow, 0);
if (twItemName == NULL)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务重启失败"));
return;
}
QString strSeverManageName = twItemName ->text(); m_cApsServerManageClient->ReStartNetwork(ui.comboBoxIP->currentText().toStdString(), strSeverManageName.toStdString(), cOptRet);
if (cOptRet.m_iOprCode == 0)
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("服务重启成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
GetSeverManageData();
OnShowTableSeverManage();
//QMessageBox::information(this, tr("提示"), tr("服务重启成功"));
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("服务重启失败"));
}
}
else
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("服务重启失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("无此节点,服务重启失败"));
}
} //服务管理安装
void CServerManager::OnSeverManageInstall()
{ } //服务管理卸载
void CServerManager::OnSeverManageUnload()
{ } //服务管理升级
void CServerManager::OnSeverManagePromotion()
{ } //添加配置文件表格行
void CServerManager::OnConfigManageAdd()
{
m_pTableConfigManage->insertRow(m_iConfigManageSum);
m_pTableConfigManage->setItem(m_iConfigManageSum, 0, new QTableWidgetItem(""));
m_pTableConfigManage->setItem(m_iConfigManageSum, 1, new QTableWidgetItem(""));
m_pTableConfigManage->setItem(m_iConfigManageSum, 2, new QTableWidgetItem(""));
m_iConfigManageSum = m_iConfigManageSum + 1;
} //上传配置文件
void CServerManager::OnConfigManageUpload()
{
if (m_iConfigManageSum == 0)
{
//QMessageBox::information(this, tr("提示"), tr("没有数据,操作失败"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置上传失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
}
for (int i = 0; i < m_iConfigManageSum; i++)
{
QString strKeyName = m_pTableConfigManage->item(i, 0)->text();
QString strKeyValue = m_pTableConfigManage->item(i, 1)->text();
QString strKeyDes = m_pTableConfigManage->item(i, 2)->text();
if (strKeyName.isEmpty())
{
break;
}
else
{
m_cConfigOption.m_vConfigOption.at(i).m_sKeyName.clear();
m_cConfigOption.m_vConfigOption.at(i).m_sKeyName = strKeyName.toStdString();
m_cConfigOption.m_vConfigOption.at(i).m_sKeyValue.clear();
m_cConfigOption.m_vConfigOption.at(i).m_sKeyValue = strKeyValue.toStdString();
m_cConfigOption.m_vConfigOption.at(i).m_sKeyDes .clear();
m_cConfigOption.m_vConfigOption.at(i).m_sKeyDes = strKeyDes.toStdString();
}
}
CMSOprResult cOptRet;
m_cApsServerManageClient->UploadConfig(ui.comboBoxIP->currentText().toStdString(), ui.comboBoxConfig->currentText().toStdString(), m_cConfigOption.m_vConfigOption, cOptRet);
if (cOptRet.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("配置上传失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("配置失败"));
}
else
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("配置上传成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("配置成功"));
}
} //添加DNS配置
void CServerManager::OnAddDNS()
{
std::vector<std::string > vDNSAdd;
std::string strDNSMain = ui.mainDNSlineEdit->text().toStdString();
std::string strDNSSpare = ui.spareDNSlineEdit->text().toStdString();
if(OnCheckIP(strDNSMain) == -1 || OnCheckIP(strDNSSpare) == -1)
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
}
CMSOprResult cOptRet;
vDNSAdd.push_back(strDNSMain);
vDNSAdd.push_back(strDNSSpare);
m_cApsServerManageClient->AddDNS(ui.comboBoxIP->currentText().toStdString(), vDNSAdd, cOptRet);
if (cOptRet.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("DNS配置失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("DNS配置失败"));
}
else
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("DNS配置成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("DNS配置成功"));
}
} //删除DNS配置
void CServerManager::OnDelDNS()
{
std::string strDNSMain = ui.mainDNSlineEdit->text().toStdString();
std::string strDNSSpare = ui.spareDNSlineEdit->text().toStdString();
if(OnCheckIP(strDNSMain) == -1 || OnCheckIP(strDNSSpare) == -1)
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("IP格式错误 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
}
CMSOprResult cOptRet;
m_cApsServerManageClient->DelDNS(ui.comboBoxIP->currentText().toStdString(), strDNSMain, cOptRet);
if (cOptRet.m_iOprCode != 0)
{
QMessageBox mesBox(QMessageBox::Warning, tr("提示"), tr("DNS删除失败 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("DNS删除失败"));
}
else
{
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("DNS删除成功 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
//QMessageBox::information(this, tr("提示"), tr("DNS删除成功"));
ui.mainDNSlineEdit->setText("");
ui.spareDNSlineEdit->setText("");
}
} //检查IP是否合格
int CServerManager::OnCheckIP(std::string& strIP)
{
if (strIP.empty())
{
//QMessageBox::information(this, tr("提示"), tr("请输入数据"));
return -1;
}
char* cstrIP = NULL;
char* cstrIPTmp = NULL;
cstrIP = new char[strIP.size() + 1];
cstrIPTmp = cstrIP;
strcpy(cstrIP, strIP.c_str());
int iNum = 0;
for (int i = 0; i < (strIP.size()); i++)
{
if (*cstrIPTmp == '.')
{
iNum++;
}
if (iNum == 3)
{
if (*(cstrIPTmp + 1) == '\0')
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
delete[] cstrIP;
return -1;
}
else
{
break;
}
}
cstrIPTmp++;
}
if(iNum < 3)
{
//QMessageBox::information(this, tr("提示"), tr("输入格式错误"));
delete[] cstrIP;
return -1;
}
delete[] cstrIP;
return 0;
} CApsServerManageClient* CServerManager::GetApsSerManaClient()
{
return m_cApsServerManageClient;
} //设置IP 端口
void CServerManager::OnInitIPPort()
{
m_strServerIP = ui.lineEditIP->text(); m_iServerPort = ui.lineEditPort->text().toInt();
if (m_iServerPort == 0 || m_strServerIP.isEmpty())
{
//QMessageBox::information(this, tr("提示"), tr("请输入数据"));
QMessageBox mesBox(QMessageBox::Information, tr("提示"), tr("请输入数据 "), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
mesBox.setButtonText(QMessageBox::Ok, tr("确定"));
mesBox.exec();
return;
}
else if(-1 == OnCheckIP(m_strServerIP.toStdString()))
{
return;
}
else
{
m_cApsServerManageClient->initConfig(m_strServerIP.toStdString(), m_iServerPort); m_pmsgBox = new QMessageBox(QMessageBox::Information, tr("提示"), tr("服务器连接中..."), QMessageBox::Ok, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint );
m_pmsgBox->setButtonText(QMessageBox::Ok, tr("确定"));
m_pmsgBox->open();
m_pCSeverThread->begin();
}
} void CServerManager::OnGetNodeManagePwd(int row, int column)
{
/*if (column)
{
}*/
} QString CServerManager::GetSeverIP()
{
return m_strServerIP;
} int CServerManager::GetSeverPort()
{
return m_iServerPort;
} //void QTableWidget::itemChanged ( QTableWidgetItem * item ) [signal]

插入空白行:

void insertTimeBlankEntry()
{
m_bTimeFlag = false;
int iRow = m_pTimeModel->rowcount();
m_pTimeModel->insertRows(iRow, 1, QModelIndex());
m_pTimeModel->setData(m_pTimeModel->index(iRow, 0), m_iTimeMaxkey);
m_pTimeModel->setData(m_pTimeModel->index(iRow, 1), QVariant("").toTime());
m_pTimeModel->setData(m_pTimeModel->index(iRow, 2), QVariant("").toTime());
m_pTimeModel->item(iRow, 0)->setEditable(false);
m_iTimeBlankKey = m_iTimeMaxkey;
m_bTimeFalg = true;
}

QT参考录的更多相关文章

  1. Qt之保持GUI响应

    简述 Qter们经常遇到由于耗时操作造成GUI阻塞的问题.其实,这个问题并不难克服,可以采用许多不同的方式,下面我会列举一些可选范围,根据使用情况进行处理. 简述 执行耗时操作 手动事件处理 使用一个 ...

  2. Qt Assistant介绍

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  3. 【Qt】Qt Assistant介绍【转】

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  4. CentOS下Qt窗口透明效果失效,成黑色背景的问题

    一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行 ...

  5. 生成 Qt 文档

    个人总结    从命令行进入Qt安装目录     设置环境变量     set path=D:/mingw32/bin;D:/Qt/5.0.0/qtbase/bin;D:/icu/bin;D:/icu ...

  6. Qt环境配置 + Qt使用教程

    官方下载链接有以下: http://download.qt.io/official_releases/qt/5.8/5.8.0/ http://download.qt.io/official_rele ...

  7. 编译 Qt 5.6(使QtWebEngine支持XP)

    说明 qt 5.6的编译进行了数十遍,才得出本文的可行方案,之所以花了这么多的时间,主要是qt引入了QtWebEngine模块后,导致编译难度直线上升,而且又有一些中国特色的问题(如360安全卫士)导 ...

  8. qt(一)

    一.Qt安装 qt离线安装地址:http://download.qt.io/archive/qt/ 参考教程:https://blog.csdn.net/u013934107/article/deta ...

  9. c++程序员必知的几个库

    c++程序员必知的几个库 1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5 ...

随机推荐

  1. Solr4.8.0源码分析(19)之缓存机制(二)

    Solr4.8.0源码分析(19)之缓存机制(二) 前文<Solr4.8.0源码分析(18)之缓存机制(一)>介绍了Solr缓存的生命周期,重点介绍了Solr缓存的warn过程.本节将更深 ...

  2. Solr4.8.0源码分析(4)之Eclipse Solr调试环境搭建

    Solr4.8.0源码分析(4)之Eclipse Solr调试环境搭建 由于公司里的Solr调试都是用远程jpda进行的,但是家里只有一台电脑所以不能jpda进行调试,这是因为jpda的端口冲突.所以 ...

  3. Delphi 缩放图像代码 - 支持PNG透明通道(利用了Windows的windowscodecs.dll)

    要求Delphi2007或者更高版本, 系统要求至少XP-SP2以上 实际上是利用了Windows的windowscodecs.dll这个文件的功能 在VCL里已经封装为TWICImage类 proc ...

  4. android 自定义titlebar

    首先,修改标题栏的宽度和背景,在style.xml中添加: <style> <item name="android:background">@drawabl ...

  5. freemarker基本知识总结

    1.取出内容 ${} 例如,${document.fileName} 2. <ul> <#list cms.documents("channel=XXXX") a ...

  6. Selenium webdriver 元素操作

    本来这些东西网上一搜一大堆,但是本着收集的精神,整理一份放着吧!哈!哈!哈! 1. 输入框(text field or textarea) WebElement element = driver.fi ...

  7. Java 8 Lambda 揭秘

    再了解了Java 8 Lambda的一些基本概念和应用后, 我们会有这样的一个问题: Lambda表达式被编译成了什么?. 这是一个有趣的问题,涉及到JDK的具体的实现. 本文将介绍OpenJDK对L ...

  8. Java并发编程:并发容器ConcurrentHashMap

    Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...

  9. JS 实现显示和隐藏div(以百度地图为例)

    主要参考的文章:https://my.oschina.net/xsh1208/blog/215811,https://zhidao.baidu.com/question/568774688.html ...

  10. Django 数据库查询

    #!/usr/bin/python #coding:utf-8 from django.shortcuts import render; from django.shortcuts import re ...