?? 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);
}
//根據(jù)當(dāng)前表,切換到相應(yīng)的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清除后,用戶設(shè)置將會丟失,但不影響后臺數(shù)據(jù)庫.",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("請輸入顯示為*的列,以便保密口令等關(guān)鍵列"),
tr("列名稱,以,號隔開: "), QLineEdit::Normal,
text, &ok);
if (ok && !text.isEmpty())
settings.setValue("xh",QVariant(text));
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -