📄 mainwindow.cpp
字号:
{
QString connectName=comboBox->itemData(comboBox->currentIndex(),Qt::UserRole).toString();
stackedWidget->setCurrentIndex(stackedWidget->count()-1);
tableViewQuery->show();
QString sql=textEdit->getSql();
QSqlDatabase database;
if(connectName==g_connectName)
database=db;
else
database=QSqlDatabase::database(connectName);
if(!database.isOpen())
{
QApplication::restoreOverrideCursor();
QMessageBox::warning(this,"",comboBox->currentText()+" 未连接!");
return;
}
QString temp=sql;
temp=temp.toLower().trimmed();
while(temp.contains("\r"))
temp.replace("\r","");
while(temp.contains("\n"))
temp.replace("\n","");
if(temp=="commit")
{
database.commit();
database.transaction();
return;
}
if(temp=="rollback" )
{
database.rollback();
database.transaction();
return;
}
QApplication::setOverrideCursor(Qt::WaitCursor);
QSqlQuery query(database);
if(query.exec(sql))
{
if(queryModel)
delete queryModel;
queryModel=new QSqlQueryModel(tableViewQuery);
queryModel->setQuery(query);
tableViewQuery->closeFilter();
while( query.isSelect() && queryModel->canFetchMore())
queryModel->fetchMore();
tableViewQuery->setModel(queryModel);
tableViewQuery->enableAction(false);
tableViewQuery->getFindAction()->setEnabled(true);;
tableViewQuery->resizeColumnsToContents ();
tableViewQuery->resizeRowsToContents ();
QApplication::restoreOverrideCursor();
}
else
{
QApplication::restoreOverrideCursor();
QString message=query.lastError().text();
statusBar()->showMessage(message);
QMessageBox::warning(this,"错误",message);
}
QApplication::restoreOverrideCursor();
}
void MainWindow::openTable()
{
foreach(QWidget *widget,widgetList)
{
if(widget->objectName()=="tree" && widget->isVisible())
{
TreeWidget * treeWidget=qobject_cast<TreeWidget *>(widget);
if(treeWidget)
treeWidget->onEditTable();
}
}
}
void MainWindow::managerApplication()
{
ManagerDialog *dlg=new ManagerDialog(this,"dm_application");
dlg->show();
QApplication::restoreOverrideCursor();
}
void MainWindow::managerConnection()
{
ManagerDialog *dlg=new ManagerDialog(this,"dm_connection");
dlg->show();
}
void MainWindow::managerTable()
{
ManagerDialog *dlg=new ManagerDialog(this,"dm_table");
dlg->show();
}
void MainWindow::managerField()
{
ManagerDialog *dlg=new ManagerDialog(this,"dm_field");
dlg->show();
}
void MainWindow::closeEvent ( QCloseEvent * event )
{
foreach(QWidget *widget,qApp->allWidgets())
{
if(widget->windowTitle().length()>0)
widget->close();
}
}
void MainWindow::onSetSum(double nSum)
{
if(nSum>0)
{
//qWarning("sum:%f",nSum);
QString str=tr("%1").arg(nSum,0,'f');
if(str.contains("."))
{
while(str.endsWith('0'))
str=str.left(str.length()-1);
}
if(str.endsWith('.'))
str=str.left(str.length()-1);
statusBar()->showMessage(tr("合计:")+str);
}
else
statusBar()->showMessage("");
}
void MainWindow::createNewTableView(MySqlTableModel * model,const QString caption)
{
for(int i=0;i<stackedWidget->count();i++)
{
QWidget *widget=stackedWidget->widget(i);
if(widget)
{
TableView *view=qobject_cast<TableView *>(widget);
if(view)
{
MySqlTableModel *m=qobject_cast<MySqlTableModel *>(view->model());
if(m)
{
if(m->connectName==model->connectName && m->tableName()==model->tableName())
{
tabMenu->setCurrentIndex(i);
stackedWidget->setCurrentIndex(i);
delete model;
return;
}
}
}
}
}
TableView *tableView = new TableView(this);
connect(tableView,SIGNAL(onSum(double)),this,SLOT(onSetSum(double)));
connect(tableView,SIGNAL(onCloseTable(WId)),this,SLOT(closeTab(WId)));
tableView->setTableModel(model);
int index;
index=tabMenu->insertTab(tabMenu->count(),QIcon(":/image/table.png"),caption);
stackedWidget->insertWidget(index,tableView);
//qDebug()<<index;
stackedWidget->setCurrentIndex(index);
tabMenu->setCurrentIndex(index);
qApp->processEvents();
actCloseTab->setEnabled(true);
cornerButton->setEnabled(true);
//tableView->update();
//onTabChanged(index);
}
void MainWindow::closeTab(WId id)
{
for(int i=stackedWidget->count()-1;i>=0;i--)
{
QWidget *widget=qobject_cast<TableView *>(stackedWidget->widget(i));
if(widget->winId()==id)
{
tabMenu->removeTab(i);
stackedWidget->removeWidget(widget);
delete widget;
qApp->processEvents();
}
}
if(stackedWidget->count()==1)
{
cornerButton->setEnabled(false);
actCloseTab->setEnabled(false);
}
qApp->processEvents();
}
void MainWindow::closeTabWidget()
{
if(stackedWidget->count()>1)
{
QWidget *widget=stackedWidget->currentWidget();
if(widget && widget->objectName()!="tableviewquery")
{
closeTab(widget->winId());
qApp->processEvents();
}
}
//else
//tableViewQuery->hide();
}
bool MainWindow::findTableViewQuery()
{
bool bret=false;
for(int i=0;i<stackedWidget->count();i++)
{
QWidget *widget=stackedWidget->widget(i);
if(widget->objectName()=="tableviewquery")
{
bret=true;
break;
}
}
return bret;
}
void MainWindow::onSplitterMoved(int pos,int index)
{
QList<int> list= splitter2->sizes();
if(list.at(1)==0)
{
//tableViewQuery->hide();
actExecuteSql->setEnabled(false);
stackedWidget->setCurrentIndex(tabMenu->currentIndex());
cornerButton->setEnabled(true);
}
else
{
//preIndex=stackedWidget->currentIndex();
tableViewQuery->show();
actExecuteSql->setEnabled(true);
cornerButton->setEnabled(false);
stackedWidget->setCurrentIndex(stackedWidget->count()-1);
}
qApp->processEvents();
}
void MainWindow::onTabChanged(int index)
{
bool bOK=false;
preIndex=index;
//qDebug()<<"onTabChanged:"<<index;
QWidget *widget=stackedWidget->widget(index);
if(widget)
{
if(widget->objectName()=="tableviewquery")
{
cornerButton->setEnabled(false);
actCloseTab->setEnabled(false);
}
else
{
cornerButton->setEnabled(true);
actCloseTab->setEnabled(true);
stackedWidget->setCurrentIndex(index);
}
//根据当前表,切换到相应的tree 中
TableView *view=qobject_cast<TableView *>(widget);
if(view)
{
MySqlTableModel *m=qobject_cast<MySqlTableModel *>(view->model());
if(m)
{
for(int i=0;i<tabWidget->count();i++)
{
QWidget *w1=tabWidget->widget(i);
QToolBox * toolBox=qobject_cast<QToolBox *>(w1);
if(toolBox)
{
for(int j=0;j<toolBox->count();j++)
{
QWidget *w2=toolBox->widget(j);
TreeWidget * treeWidget=qobject_cast<TreeWidget *>(w2);
if( treeWidget && m->connectName==treeWidget->connectName)
{
toolBox->setCurrentWidget(treeWidget);
tabWidget->setCurrentWidget(toolBox);
bOK=true;
break;
}
}
}
if(bOK)
break;
}
}
}
}
qApp->processEvents();
}
void MainWindow::clearCache()
{
if(QMessageBox::question(this,"","确信要清除表缓存和字段缓存吗?\n清除后,用户设置将会丢失,但不影响后台数据库.",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::No)
return;
if(!db.isOpen())
return;
QString sql="delete from dm_field where connection_id>0";
db.exec(sql);
sql="delete from dm_table where connection_id>0";
db.exec(sql);
foreach(QWidget *widget,widgetList)
{
if(widget->objectName()=="tree")
{
TreeWidget * treeWidget=qobject_cast<TreeWidget *>(widget);
treeWidget->clear();
}
}
}
void MainWindow::setXHColumn()
{
QSettings settings(qApp->applicationName(), "dbmanager");
QString text = settings.value("xh", "password,passwd,mm,口令,密码").toString();
bool ok;
text = QInputDialog::getText(this, tr("请输入显示为*的列,以便保密口令等关键列"),
tr("列名称,以,号隔开: "), QLineEdit::Normal,
text, &ok);
if (ok && !text.isEmpty())
settings.setValue("xh",QVariant(text));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -