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