亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainwindow.cpp

?? 跨平臺,多數據庫查看編輯和查詢工具,平臺支持windows,linux,數據庫支持oracle,odbc,mysql,slite等
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "mainwindow.h"
#include <QtDebug>

extern QString g_connectName;

MainWindow::MainWindow()
{	
	//curDatabase=0;
	queryModel=0;

	QSplitter *splitter = new QSplitter(this);
	splitter2 = new QSplitter(this);
	connect(splitter2,SIGNAL(splitterMoved(int,int)),this,SLOT(onSplitterMoved(int,int)));
	tableViewQuery = new TableView(this);
	//MyDelegate *delegate=new MyDelegate(tableViewQuery);
	//tableViewQuery->setItemDelegate(delegate); 	
	//tableViewQuery->hide();
	tableViewQuery->setObjectName("tableviewquery");
	connect(tableViewQuery,SIGNAL(onSum(double)),this,SLOT(onSetSum(double)));
	cornerButton=new QToolButton(this);
	cornerButton->hide();
	cornerButton->setEnabled(false);
	cornerButton->setIcon(QIcon(":/image/closetab.png"));
	cornerButton->setAutoRaise(true);	
	connect(cornerButton,SIGNAL(clicked()),this,SLOT(closeTabWidget()));
	tabWidget = new QTabWidget(splitter);
	tabMenu=new QTabBar(this);

	//tabMenu->setCornerWidget(cornerButton);
	connect(tabMenu,SIGNAL(currentChanged ( int)),this,SLOT(onTabChanged(int)));

	textEdit =new MyTextEdit(this);

	

	// 創建tab頁
	stackedWidget  = new QStackedWidget(splitter);
	stackedWidget->addWidget(tableViewQuery);

	tabWidget->setTabPosition(QTabWidget::South);
	tabWidget->setMinimumWidth(155);
	

	// 布局界面
	splitter2->setOrientation(Qt::Vertical);
	splitter2->setOpaqueResize(true);	
	//splitter2->addWidget(tableView);
	//splitter2->addWidget(tabMain);
	splitter2->addWidget(stackedWidget);
	
	QWidget *widget=new QWidget(this);
	QVBoxLayout *layout=new QVBoxLayout(widget);
	QHBoxLayout *hlayout=new QHBoxLayout;
	comboBox=new QComboBox(this);
	hlayout->addWidget(new QLabel("活動連接:",this));
	hlayout->addWidget(comboBox);
	hlayout->addStretch();
	hlayout->setContentsMargins(0,0,0,0);
	layout->addLayout(hlayout);
	layout->addWidget(textEdit);
	layout->setContentsMargins(0,0,0,0);
	widget->setLayout(layout);
	splitter2->addWidget(widget);
	
	QList <int>listWidth;
	listWidth<<1<<0;
	splitter2->setSizes(listWidth);
	
	//splitter->addWidget(tabWidget);
	//splitter->addWidget(splitter2);
	QDockWidget *dockWidget=new QDockWidget("對象列表",this);
	dockWidget->setWidget(tabWidget);
	addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
	
	
	setCentralWidget(splitter2);
	statusBar()->show();

  createActions();
	createMenus();
	createToolBar();
	
	setContentsMargins(0,0,0,0);		
	setWindowTitle(tr("數據庫管理"));
	
	db=QSqlDatabase::database(g_connectName);
	db.transaction();
	setWindowState(Qt::WindowMaximized);
	
}
MainWindow::~MainWindow()
{
	db.commit();
	
}

void MainWindow::clear()
{
	comboBox->clear();
	
	for(int i=tabWidget->count()-1;i>=0;i--)
		tabWidget->removeTab(i);
	
	foreach(QWidget *widget,widgetList)
	{
		if(widget->objectName()=="toolbox")
		{
			QToolBox * toolBox=qobject_cast<QToolBox *>(widget);
			for(int i=toolBox->count()-1;i>=0;i--)
		    toolBox->removeItem(i);
			QObject::disconnect(toolBox,0,0,0);
		}
	}

	foreach(QWidget *widget,widgetList)
	{		
		if(widget->objectName()=="tree")
		{
			TreeWidget * treeWidget=qobject_cast<TreeWidget *>(widget);
			treeWidget->closeDb();
			QObject::disconnect(treeWidget,0,0,0);
			widget->close();			
		}
		
	}
	foreach(QWidget *widget,widgetList)
	{
		if(widget->objectName()=="toolbox")
			widget->close();
	}
	widgetList.clear();

}

void MainWindow::loadData()
{	
	tabWidget->setUpdatesEnabled(false);
	QApplication::setOverrideCursor(Qt::WaitCursor);
	clear();	
	comboBox->addItem("系統管理",QVariant(g_connectName));
	
	QString sqlApp="SELECT id,application_name FROM dm_application";	
	QSqlQuery queryApp=db.exec(sqlApp);	
	while(queryApp.next())
	{
	   int application_id=queryApp.value(0).toInt();
	   QString application_name=queryApp.value(1).toString();
	   QToolBox *toolBox = new QToolBox(this);
	   toolBox->setObjectName("toolbox");
	   //toolBox->setAttribute(Qt::WA_DeleteOnClose);
	   widgetList.append(toolBox);
		 tabWidget->addTab(toolBox,application_name);	 
		
	   QString sql=tr("SELECT id,type,server,dbname,username,password,memo FROM dm_connection WHERE application_id=%1 ORDER BY id").arg(application_id);
	   //qWarning(sql.toLatin1().data());
	   QSqlQuery query = db.exec(sql);
	   query.setForwardOnly(true);
	   int a=1;
	
	   while(query.next()) 
	   {
		   ConnectionSetup connection;
		   connection.id=query.record().field("id").value().toInt();
		   connection.type     = query.record().field("type").value().toString();
		   connection.server   = query.record().field("server").value().toString();
		   connection.database = query.record().field("dbname").value().toString();
		   connection.username = query.record().field("username").value().toString();
		   connection.password = query.record().field("password").value().toString();
		   connection.memo     = query.record().field("memo").value().toString();		   	   	 
		   QString message="正在連接 "+connection.memo +" ... ";
		   //qDebug()<<a++<<connection.memo;

		   splashScreen->showMessage(message,Qt::AlignCenter|Qt::AlignBottom);
	   	 TreeWidget *tree = new TreeWidget(this);	   	 
	   	 tree->setObjectName("tree");
	   	 widgetList.append(tree);
	   	 QString connectName=tr("dm_connect_%1").arg(connection.id);	;
	   	 comboBox->addItem(connection.memo,QVariant(connectName));
	   	 
	   	 tree->setConnectionSetup(&db,connection);	   	 
 			 tree->header()->hide();
			 connect(tree,SIGNAL(setTableModel(MySqlTableModel *,const QString)),this,SLOT(createNewTableView(MySqlTableModel *,const QString)));
			 connect(tree,SIGNAL(onShow(QString & )),this,SLOT(setCurrentDatabase(QString & )));
			 connect(tree,SIGNAL(showMessage(const QString &)),statusBar(),SLOT(showMessage(const QString &)));
			 connect(tree,SIGNAL(canEdit(bool)),actOpenTable,SLOT(setEnabled(bool)));
			 toolBox->addItem(tree,QIcon(":/image/database.png"),connection.memo);			 
			 
	   }//end query
	   query.clear();
  }//end queryApp 
  queryApp.clear();  
  tabWidget->setUpdatesEnabled(true);
  db.commit();
  
  QApplication::restoreOverrideCursor();
}


void MainWindow::createActions()
{

	m_pExitAct = new QAction(tr("退出"), this);
	m_pExitAct->setShortcut(tr("Ctrl+Q"));
	m_pExitAct->setIcon(QIcon(":/image/exit.png"));
	connect(m_pExitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));

	m_pAboutAct = new QAction(tr("&關于"), this);
	m_pAboutAct->setIcon(QIcon(":/image/about.png"));
	connect(m_pAboutAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
	
	actReload=new QAction(QIcon(":/image/refresh.png"),"重新載入系統",this);
	connect(actReload,SIGNAL(triggered()),this,SLOT(loadData()));
	
	actOpenTable=new QAction(QIcon(":/image/table_edit.png"),"打開表編輯內容",this);
	actOpenTable->setShortcut(Qt::Key_F4);
	
	connect(actOpenTable,SIGNAL(triggered()),this,SLOT(openTable()));
	
	actDmApplication=new QAction(QIcon(":/image/"),"管理應用",this);
	connect(actDmApplication,SIGNAL(triggered()),this,SLOT(managerApplication()));
	
	actDmConnection=new QAction(QIcon(":/image/"),"管理連接",this);
	connect(actDmConnection,SIGNAL(triggered()),this,SLOT(managerConnection()));
	
	actDmTable=new QAction(QIcon(":/image/"),"管理表緩存",this);
	connect(actDmTable,SIGNAL(triggered()),this,SLOT(managerTable()));
	
	actDmField=new QAction(QIcon(":/image/"),"管理字段緩存",this);
	connect(actDmField,SIGNAL(triggered()),this,SLOT(managerField()));
	
	
	actCloseTab=new QAction(QIcon(":/image/closetab.png"),"關閉當前表",this);
	actCloseTab->setShortcut(tr("Ctrl+W"));
	actCloseTab->setEnabled(false);
	connect(actCloseTab,SIGNAL(triggered()),cornerButton,SLOT(click()));

	actExecuteSql=new QAction(QIcon(":/image/execute.png"),"執行SQL查詢語句...",this);
	actExecuteSql->setEnabled(false);
	actExecuteSql->setShortcut(Qt::Key_F5);	
	connect(actExecuteSql,SIGNAL(triggered()),this,SLOT(executeSql()));

}

void MainWindow::createMenus()
{
	m_pFileMenu = menuBar()->addMenu(tr("&F.文件"));
	//m_pFileMenu->addAction(m_pSaveAct);
	m_pFileMenu->addSeparator();
	m_pFileMenu->addAction(m_pExitAct);

	menuBar()->addSeparator();

	m_pEditMenu = menuBar()->addMenu(tr("&E.編輯"));
	

	m_pEditMenu->addAction(actOpenTable);
	m_pEditMenu->addAction(actCloseTab);
	menuBar()->addSeparator();
	m_pEditMenu->addAction(actExecuteSql);
	/*
	m_pEditMenu->addAction(tableView->getInsertRowAction());
	m_pEditMenu->addAction(tableView->getAppendRowAction());
	m_pEditMenu->addAction(tableView->getDeleteRowAction());
	m_pEditMenu->addAction(tableView->getCommitAction());
	m_pEditMenu->addAction(tableView->getRollbackAction());	
	m_pEditMenu->addSeparator();
	m_pEditMenu->addAction(tableView->getFilterAction());	
	m_pEditMenu->addAction(tableView->getFindAction());	
	*/
	
	m_pManagerMenu=menuBar()->addMenu(tr("&M.系統管理"));
	m_pManagerMenu->addAction(actDmApplication);
	m_pManagerMenu->addAction(actDmConnection);
	m_pManagerMenu->addAction(actDmTable);
	m_pManagerMenu->addAction(actDmField);
	
	
	QAction *action=new QAction(this);
  action->setSeparator(true);
  m_pManagerMenu->addAction(action);
  action=new QAction("清除所有表緩存和字段緩存",this);
  connect(action,SIGNAL(triggered()),this,SLOT(clearCache()));
  m_pManagerMenu->addAction(action);
  
  action=new QAction(this);
  action->setSeparator(true);
  m_pManagerMenu->addAction(action);

  action=new QAction("設置顯示*號列",this);
  connect(action,SIGNAL(triggered()),this,SLOT(setXHColumn()));
  m_pManagerMenu->addAction(action);
  

	m_pHelpMenu = menuBar()->addMenu(tr("&H.幫助"));
	m_pHelpMenu->addAction(m_pAboutAct);

} 


void MainWindow::createToolBar()
{
	m_pToolBar = new QToolBar(this);
	//m_pToolBar->addAction(actReload);
	m_pToolBar->addSeparator();
	m_pToolBar->addAction(actOpenTable);
	//m_pToolBar->addAction(actCloseTab);
	m_pToolBar->addSeparator();
	m_pToolBar->addAction(actExecuteSql);
	
	/*
	m_pToolBar->addAction(tableView->getCloseAction());	
	m_pToolBar->addAction(tableView->getCommitAction());
	m_pToolBar->addAction(tableView->getRollbackAction());
	m_pToolBar->addSeparator();
	m_pToolBar->addAction(tableView->getInsertRowAction());
	m_pToolBar->addAction(tableView->getAppendRowAction());
	m_pToolBar->addAction(tableView->getDeleteRowAction());
	m_pToolBar->addSeparator();
	m_pToolBar->addAction(tableView->getFilterAction());
	m_pToolBar->addAction(tableView->getFindAction());	
	*/
	addToolBar(m_pToolBar);
	
	QToolBar *toolbar=new QToolBar(this);
	//toolbar->addWidget(cornerButton);
	toolbar->addAction(actCloseTab);
	toolbar->addWidget(tabMenu);
	addToolBar(toolbar);
	//splitter2->addWidget(tabMenu);
}





void MainWindow::showText(QString text)
{
	QMessageBox::information(this,tr("數據庫管理"),
		text,
		QMessageBox::tr("確定"));
}



void MainWindow::setCurrentDatabase(QString & strConnectName)
{
	
	for(int i=0;i<comboBox->count();i++)
	{
		if(comboBox->itemData(i,Qt::UserRole).toString()==strConnectName)
		{
			comboBox->setCurrentIndex(i);
			break;
		}
	}
	//curDatabase=cdb;
	//executeButton->setEnabled(curDatabase->isOpen());
}

void MainWindow::executeSql()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影片第一页| 国产视频一区不卡| 久久一区二区三区四区| 国产精品久久久久久福利一牛影视 | 中文字幕亚洲在| 日本三级亚洲精品| 一本久久精品一区二区| 久久久亚洲午夜电影| 午夜精品在线视频一区| 99久久精品国产导航| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久影音资源网| 成人av免费网站| 日韩一本二本av| 日韩国产精品91| 欧美午夜电影在线播放| 亚洲欧洲国产日韩| 国产成人鲁色资源国产91色综| 欧美精品国产精品| 亚洲午夜免费视频| 色噜噜久久综合| 亚洲欧美中日韩| 91麻豆产精品久久久久久| 欧美国产国产综合| 风流少妇一区二区| 国产婷婷一区二区| 国产精品99久久不卡二区| 久久香蕉国产线看观看99| 美女视频第一区二区三区免费观看网站 | 国产福利91精品一区| 精品欧美一区二区在线观看| 蜜桃久久久久久| 日韩欧美色电影| 男男视频亚洲欧美| 日韩精品中文字幕在线一区| 欧美aⅴ一区二区三区视频| 欧美久久久久久蜜桃| 日韩av不卡在线观看| 日韩欧美国产小视频| 国产伦精一区二区三区| 国产亚洲综合在线| 91精品国产综合久久香蕉麻豆| 亚洲成av人在线观看| 日韩一卡二卡三卡四卡| 狠狠色丁香久久婷婷综合_中| 久久亚洲精品小早川怜子| 成人在线视频首页| 亚洲精品老司机| 777奇米成人网| 国产精品一二三区| 亚洲品质自拍视频网站| 欧美精品18+| 国产一区视频网站| 亚洲欧洲av在线| 欧美自拍偷拍一区| 美国毛片一区二区| 国产精品久久久久影院老司| 在线一区二区三区四区| 日韩不卡手机在线v区| 26uuu成人网一区二区三区| 国产69精品久久99不卡| 一区二区三区在线免费观看| 欧美一区在线视频| 成人性生交大片| 亚洲高清不卡在线| 久久久久久久久蜜桃| 99re免费视频精品全部| 午夜精品福利一区二区三区蜜桃| 日韩欧美另类在线| 99久久精品国产精品久久| 视频一区欧美日韩| 中文字幕日本不卡| 精品国产免费一区二区三区四区 | 国产福利一区二区三区在线视频| 亚洲色图欧洲色图婷婷| 精品久久久久久最新网址| 日韩欧美一区二区不卡| 99久久免费精品| 麻豆传媒一区二区三区| 成人免费在线视频观看| 欧美哺乳videos| 欧美综合欧美视频| eeuss鲁片一区二区三区| 免费久久99精品国产| 最新日韩av在线| 久久综合色之久久综合| 欧美色手机在线观看| 成人黄色在线视频| 久99久精品视频免费观看| 一区二区三区丝袜| 国产精品天美传媒沈樵| 精品久久久久久无| 欧美一区二区久久| 欧美影视一区二区三区| 91视频在线看| 成人综合婷婷国产精品久久免费| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久噜噜噜久久中文字幕色伊伊 | 欧美不卡一区二区| 亚洲精品免费视频| 中文字幕成人av| 久久久久国产精品厨房| 欧美精品一区二区三区蜜桃 | 日本女人一区二区三区| 亚洲欧美日韩国产一区二区三区 | 香港成人在线视频| 一级日本不卡的影视| 成人免费在线观看入口| 国产精品久久午夜| 中文字幕在线观看不卡视频| 久久精品男人的天堂| 久久久www成人免费无遮挡大片 | 久久精品国产免费| 免费一级片91| 韩国精品主播一区二区在线观看 | 日韩精品欧美精品| 日韩专区中文字幕一区二区| 亚洲成人激情社区| 日日摸夜夜添夜夜添国产精品| 午夜精品一区在线观看| 日本sm残虐另类| 美女国产一区二区| 国产老妇另类xxxxx| 国产精品1024久久| 成人网男人的天堂| 色综合天天综合给合国产| 91极品视觉盛宴| 91精品国产综合久久婷婷香蕉| 日韩一区二区中文字幕| 久久欧美中文字幕| 一区免费观看视频| 午夜国产精品影院在线观看| 日本成人在线看| 国产成人在线视频免费播放| 成人avav在线| 精品视频1区2区3区| 日韩无一区二区| 国产欧美一区二区在线| 亚洲伊人色欲综合网| 人妖欧美一区二区| 盗摄精品av一区二区三区| 色婷婷综合久久久中文一区二区| 色狠狠色狠狠综合| 精品国产a毛片| 亚洲精品成人在线| 久久av中文字幕片| 91在线观看成人| 日韩一区二区精品葵司在线 | 91小视频免费看| 日韩一级免费一区| 中文字幕亚洲不卡| 美美哒免费高清在线观看视频一区二区| 国产乱人伦偷精品视频不卡 | 视频一区在线播放| 成人av电影在线| 日韩欧美国产电影| 亚洲精品久久嫩草网站秘色| 极品少妇xxxx精品少妇偷拍 | 精品少妇一区二区三区日产乱码 | 91福利区一区二区三区| 久久婷婷一区二区三区| 一区二区在线免费| 粉嫩欧美一区二区三区高清影视| 91一区二区在线| 337p日本欧洲亚洲大胆精品| 一卡二卡欧美日韩| 成人美女在线观看| 欧美精品一区二区三区在线| 一区二区三区精品久久久| 国产精品888| 666欧美在线视频| 亚洲欧美日韩电影| 国产精品小仙女| 日韩欧美区一区二| 热久久国产精品| 欧美性生交片4| 一色桃子久久精品亚洲| 国产69精品久久久久毛片 | 国产精品人妖ts系列视频| 美国十次综合导航| 欧美一区二区精品在线| 香蕉影视欧美成人| 精品视频一区二区三区免费| 亚洲视频一区在线观看| 国产91综合一区在线观看| 欧美电视剧免费全集观看| 日韩一区精品视频| 在线观看日韩一区| 亚洲精品老司机| 欧美自拍丝袜亚洲| 亚洲一区二区美女| 在线亚洲免费视频| 亚洲综合久久av| 91国内精品野花午夜精品| 亚洲精品精品亚洲| 一本到三区不卡视频| 一区二区欧美精品| 欧美日韩一区二区三区不卡| 亚洲一区在线观看视频| 欧美日韩精品一二三区|