Редакция 3 | Редакция 6 | К новейшей редакции | Авторство | Сравнить с предыдущей | Последнее изменение | Открыть журнал | Скачать | RSS
#include <QtGui>
#include <QtSql>
#include "mainwindow.h"
#include "dbconfigdialog.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QLabel *dbLabel = new QLabel("Database");
QComboBox *dbCombo = new QComboBox;
dbCombo->addItem("default");
dbCombo->setEnabled(false);
QPushButton *dbPrefButton = new QPushButton("Config");
QPushButton *dbConnectButton = new QPushButton("Connect");
QHBoxLayout *dbLayout = new QHBoxLayout;
dbLayout->addWidget(dbLabel);
dbLayout->addWidget(dbCombo);
dbLayout->addWidget(dbPrefButton);
dbLayout->addWidget(dbConnectButton);
QGroupBox *queryGroup = new QGroupBox("Query");
queryEdit = new QTextEdit;
QPushButton *queryExecButton = new QPushButton("Exec");
QHBoxLayout *queryLayout = new QHBoxLayout;
queryLayout->addWidget(queryEdit);
queryLayout->addWidget(queryExecButton);
queryGroup->setLayout(queryLayout);
QGroupBox *logGroup = new QGroupBox("Log");
logEdit = new QTextEdit;
logEdit->setReadOnly(true);
QHBoxLayout *logLayout = new QHBoxLayout;
logLayout->addWidget(logEdit);
logGroup->setLayout(logLayout);
QGroupBox *resultGroup = new QGroupBox("Result");
resultTable = new QTableView;
resultModel = new QSqlQueryModel;
QHBoxLayout *resultLayout = new QHBoxLayout;
resultLayout->addWidget(resultTable);
resultGroup->setLayout(resultLayout);
QWidget *mainWidget = new QWidget;
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(dbLayout);
mainLayout->addWidget(queryGroup);
mainLayout->addWidget(logGroup);
mainLayout->addWidget(resultGroup);
mainWidget->setLayout(mainLayout);
setCentralWidget(mainWidget);
connect(queryExecButton,SIGNAL(clicked()),this,SLOT(queryExec()));
connect(dbPrefButton, SIGNAL(clicked()),this,SLOT(settingsDB()));
connect(dbConnectButton, SIGNAL(clicked()),this,SLOT(connectDB()));
statusBar()->showMessage(tr("Ready"));
}
MainWindow::~MainWindow()
{
}
void MainWindow::queryExec()
{
statusBar()->showMessage("SQL process...");
resultModel->setQuery(queryEdit->toPlainText());
resultTable->setModel(resultModel);
resultTable->show();
if(resultModel->lastError().isValid())
logEdit->insertPlainText(resultModel->lastError().text());
else logEdit->insertPlainText("No error.");
logEdit->insertPlainText("\n");
statusBar()->showMessage("Ready");
}
void MainWindow::settingsDB()
{
DbConfigDialog *dbc = new DbConfigDialog();
dbc->exec();
}
void MainWindow::connectDB()
{
QSettings settings;
QSqlDatabase db = QSqlDatabase::addDatabase(settings.value("DB/driver").toString());
db.setDatabaseName(settings.value("DB/database").toString());
if (!db.open())
QMessageBox::critical(this, tr("Connection error"), tr("Can't open database\n%1").arg(db.lastError().text()), QMessageBox::Ok);
else
QMessageBox::information(this,tr("Connection complete"), tr("Connection complete!"),QMessageBox::Ok);
}