Хранилища Subversion qb

Редакция

Редакция 4 | К новейшей редакции | Только различия | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 4 Редакция 6
1
#include <QtGui>
1
#include <QtGui>
2
#include <QtSql>
2
#include <QtSql>
3
#include "mainwindow.h"
3
#include "mainwindow.h"
4
#include "dbconfigdialog.h"
4
#include "dbconfigdialog.h"
-
 
5
#include "tdpreviewdialog.h"
5
6
6
MainWindow::MainWindow(QWidget *parent)
7
MainWindow::MainWindow(QWidget *parent)
7
    : QMainWindow(parent)
8
    : QMainWindow(parent)
8
{
9
{
9
    QLabel *dbLabel = new QLabel("Database");
10
    QLabel *dbLabel = new QLabel("Database");
10
    QComboBox *dbCombo = new QComboBox;
11
    QComboBox *dbCombo = new QComboBox;
11
    dbCombo->addItem("default");
12
    dbCombo->addItem("default");
12
    dbCombo->setEnabled(false);
13
    dbCombo->setEnabled(false);
13
    QPushButton *dbPrefButton = new QPushButton("Config");
14
    QPushButton *dbPrefButton = new QPushButton("Config");
14
    QPushButton *dbConnectButton = new QPushButton("Connect");
15
    QPushButton *dbConnectButton = new QPushButton("Connect");
15
    QHBoxLayout *dbLayout = new QHBoxLayout;
16
    QHBoxLayout *dbLayout = new QHBoxLayout;
16
    dbLayout->addWidget(dbLabel);
17
    dbLayout->addWidget(dbLabel);
17
    dbLayout->addWidget(dbCombo);
18
    dbLayout->addWidget(dbCombo);
18
    dbLayout->addWidget(dbPrefButton);
19
    dbLayout->addWidget(dbPrefButton);
19
    dbLayout->addWidget(dbConnectButton);
20
    dbLayout->addWidget(dbConnectButton);
20
21
21
    QGroupBox *queryGroup = new QGroupBox("Query");
22
    QGroupBox *queryGroup = new QGroupBox("Query");
22
    queryEdit = new QTextEdit;
23
    queryEdit = new QTextEdit;
23
    QPushButton *queryExecButton = new QPushButton("Exec");
24
    QPushButton *queryExecButton = new QPushButton("Exec");
24
    QHBoxLayout *queryLayout = new QHBoxLayout;
25
    QHBoxLayout *queryLayout = new QHBoxLayout;
25
    queryLayout->addWidget(queryEdit);
26
    queryLayout->addWidget(queryEdit);
26
    queryLayout->addWidget(queryExecButton);
27
    queryLayout->addWidget(queryExecButton);
27
    queryGroup->setLayout(queryLayout);
28
    queryGroup->setLayout(queryLayout);
28
29
29
    QGroupBox *logGroup = new QGroupBox("Log");
30
    QGroupBox *logGroup = new QGroupBox("Log");
30
    logEdit = new QTextEdit;
31
    logEdit = new QTextEdit;
31
    logEdit->setReadOnly(true);
32
    logEdit->setReadOnly(true);
32
    QHBoxLayout *logLayout = new QHBoxLayout;
33
    QHBoxLayout *logLayout = new QHBoxLayout;
33
    logLayout->addWidget(logEdit);
34
    logLayout->addWidget(logEdit);
34
    logGroup->setLayout(logLayout);
35
    logGroup->setLayout(logLayout);
35
36
36
    QGroupBox *resultGroup = new QGroupBox("Result");
37
    QGroupBox *resultGroup = new QGroupBox("Result");
37
    resultTable = new QTableView;
38
    resultTable = new QTableView;
38
    resultModel = new QSqlQueryModel;
39
    resultModel = new QSqlQueryModel;
-
 
40
    QPushButton *printButton = new QPushButton("Print");
39
    QHBoxLayout *resultLayout = new QHBoxLayout;
41
    QHBoxLayout *resultLayout = new QHBoxLayout;
40
    resultLayout->addWidget(resultTable);
42
    resultLayout->addWidget(resultTable);
-
 
43
    resultLayout->addWidget(printButton);
41
    resultGroup->setLayout(resultLayout);
44
    resultGroup->setLayout(resultLayout);
42
45
43
    QWidget *mainWidget = new QWidget;
46
    QWidget *mainWidget = new QWidget;
44
    QVBoxLayout *mainLayout = new QVBoxLayout;
47
    QVBoxLayout *mainLayout = new QVBoxLayout;
45
    mainLayout->addLayout(dbLayout);
48
    mainLayout->addLayout(dbLayout);
46
    mainLayout->addWidget(queryGroup);
49
    mainLayout->addWidget(queryGroup);
47
    mainLayout->addWidget(logGroup);
50
    mainLayout->addWidget(logGroup);
48
    mainLayout->addWidget(resultGroup);
51
    mainLayout->addWidget(resultGroup);
49
52
50
    mainWidget->setLayout(mainLayout);
53
    mainWidget->setLayout(mainLayout);
51
    setCentralWidget(mainWidget);
54
    setCentralWidget(mainWidget);
52
55
53
    connect(queryExecButton,SIGNAL(clicked()),this,SLOT(queryExec()));
56
    connect(queryExecButton,SIGNAL(clicked()),this,SLOT(queryExec()));
54
    connect(dbPrefButton, SIGNAL(clicked()),this,SLOT(settingsDB()));
57
    connect(dbPrefButton, SIGNAL(clicked()),this,SLOT(settingsDB()));
55
    connect(dbConnectButton, SIGNAL(clicked()),this,SLOT(connectDB()));
58
    connect(dbConnectButton, SIGNAL(clicked()),this,SLOT(connectDB()));
-
 
59
    connect(printButton, SIGNAL(clicked()), this, SLOT(on_previewPushButton_clicked()));
56
    statusBar()->showMessage(tr("Ready"));
60
    statusBar()->showMessage(tr("Ready"));
57
}
61
}
58
62
59
MainWindow::~MainWindow()
63
MainWindow::~MainWindow()
60
{
64
{
61
65
62
}
66
}
63
67
64
void MainWindow::queryExec()
68
void MainWindow::queryExec()
65
{
69
{
66
    statusBar()->showMessage("SQL process...");
70
    statusBar()->showMessage("SQL process...");
67
    resultModel->setQuery(queryEdit->toPlainText());
71
    resultModel->setQuery(queryEdit->toPlainText());
68
    resultTable->setModel(resultModel);
72
    resultTable->setModel(resultModel);
69
    resultTable->show();
73
    resultTable->show();
70
74
71
    if(resultModel->lastError().isValid())
75
    if(resultModel->lastError().isValid())
72
        logEdit->insertPlainText(resultModel->lastError().text());
76
        logEdit->insertPlainText(resultModel->lastError().text());
73
        else logEdit->insertPlainText("No error.");
77
        else logEdit->insertPlainText("No error.");
74
    logEdit->insertPlainText("\n");
78
    logEdit->insertPlainText("\n");
75
    statusBar()->showMessage("Ready");
79
    statusBar()->showMessage("Ready");
76
}
80
}
77
81
78
void MainWindow::settingsDB()
82
void MainWindow::settingsDB()
79
{
83
{
80
    DbConfigDialog *dbc = new DbConfigDialog();
84
    DbConfigDialog *dbc = new DbConfigDialog();
81
    dbc->exec();
85
    dbc->exec();
82
}
86
}
83
87
84
void MainWindow::connectDB()
88
void MainWindow::connectDB()
85
{
89
{
86
    QSettings settings;
90
    QSettings settings;
87
91
88
    QSqlDatabase db = QSqlDatabase::addDatabase(settings.value("DB/driver").toString());
92
    QSqlDatabase db = QSqlDatabase::addDatabase(settings.value("DB/driver").toString());
89
    db.setDatabaseName(settings.value("DB/database").toString());
93
    db.setDatabaseName(settings.value("DB/database").toString());
90
    if (!db.open())
94
    if (!db.open())
91
        QMessageBox::critical(this, tr("Connection error"), tr("Can't open database\n%1").arg(db.lastError().text()), QMessageBox::Ok);
95
        QMessageBox::critical(this, tr("Connection error"), tr("Can't open database\n%1").arg(db.lastError().text()), QMessageBox::Ok);
92
    else
96
    else
93
        QMessageBox::information(this,tr("Connection complete"), tr("Connection complete!"),QMessageBox::Ok);
97
        QMessageBox::information(this,tr("Connection complete"), tr("Connection complete!"),QMessageBox::Ok);
94
}
98
}
-
 
99
-
 
100
void MainWindow::on_previewPushButton_clicked()
-
 
101
{
-
 
102
        TDPreviewDialog *dialog = new TDPreviewDialog(resultTable,new QPrinter(QPrinter::HighResolution),this);
-
 
103
        //dialog->setHeaderText(queryEdit->toPlainText());
-
 
104
        dialog->exec();
-
 
105
        delete dialog;
-
 
106
}
-
 
107
95
 
108