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