int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
#include "mainwindow.h"#include "ui_mainwindow.h"#include "dialogconnect.h"#include <QSqlTableModel>#include <QSqlError>#include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); mModel = new QSqlTableModel(this); mModel->setTable("test"); mModel->select(); ui->tableView->setModel(mModel);} MainWindow::~MainWindow(){ delete ui;} void MainWindow::on_pushButton_connect_clicked(){ DialogConnect *form = new DialogConnect(); form->setAttribute(Qt::WA_DeleteOnClose, true); form->show();} void MainWindow::on_pushButton_add_clicked(){ mModel->insertRow(mModel->rowCount());} void MainWindow::on_pushButton_del_clicked(){ mModel->removeRow(ui->tableView->currentIndex().row());} void MainWindow::on_pushButton_view_clicked(){ mModel->select();}
#include "dialogconnect.h"#include "ui_dialogconnect.h"#include <QSqlTableModel>#include <QSqlError>#include <QMessageBox> DialogConnect::DialogConnect(QWidget *parent) : QDialog(parent), ui(new Ui::DialogConnect){ ui->setupUi(this); } DialogConnect::~DialogConnect(){ delete ui;} void DialogConnect::on_pushButton_2_clicked(){ this->close();} void DialogConnect::on_pushButton_login_clicked(){ QString hostname, username, password; hostname = ui->lineEdit_adress->text(); username = ui->lineEdit_username->text(); password = ui->lineEdit_password->text(); mDatabase = QSqlDatabase::addDatabase("QMYSQL"); mDatabase.setHostName(hostname); mDatabase.setDatabaseName("test"); mDatabase.setPort(3306); mDatabase.setUserName(username); mDatabase.setPassword(password); if(!mDatabase.open()) { QMessageBox::critical (this, "Error", mDatabase.lastError ().text ()); //return; } else QMessageBox::information (this, "Error", mDatabase.lastError ().text ());}
#ifndef MAINWINDOW_H#define MAINWINDOW_H #include <QMainWindow>#include <QSqlTableModel>#include <QSqlDatabase>#include "dialogconnect.h" namespace Ui {class MainWindow;} class MainWindow : public QMainWindow{ Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_connect_clicked(); void on_pushButton_add_clicked(); void on_pushButton_del_clicked(); void on_pushButton_view_clicked(); private: Ui::MainWindow *ui; QSqlTableModel *mModel; QSqlDatabase mDatabase;}; #endif // MAINWINDOW_H
#ifndef DIALOGCONNECT_H#define DIALOGCONNECT_H #include <QDialog>#include <QMainWindow>#include <QSqlDatabase> namespace Ui {class DialogConnect;} class DialogConnect : public QDialog{ Q_OBJECT public: explicit DialogConnect(QWidget *parent = 0); ~DialogConnect(); private slots: void on_pushButton_2_clicked(); void on_pushButton_login_clicked(); private: Ui::DialogConnect *ui; QSqlDatabase mDatabase;}; #endif // DIALOGCONNECT_H
void MainWindow::on_pushButton_connect_clicked(){ // if (соединение уже установлено) mysql_disconnect DialogConnect dlgAuth(this); if (dlgAuth.exec() == QDialog::Accepted) { // if (mysql_connect...) { активируй интерфейс } }}
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
#ifndef DIALOG_IO_H#define DIALOG_IO_H#include <QDialog>#include <QSqlTableModel>#include <QSqlDatabase>#include <QMessageBox>#include <QSqlError>namespace Ui {class Dialog_io;}class Dialog_io : public QDialog{ Q_OBJECTpublic: explicit Dialog_io(QWidget *parent = 0); ~Dialog_io();public slots: void reciveData(QString str);private slots: void on_pushButton_close_clicked();private: Ui::Dialog_io *ui; QSqlQueryModel *model;};#endif // DIALOG_IO_H
#include "dialog_io.h"#include "ui_dialog_io.h"#include <QDebug>#include <QSqlDatabase>#include <QSqlQuery>Dialog_io::Dialog_io(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_io){ ui->setupUi(this);}QString str;void Dialog_io::reciveData(QString str) { QSqlQueryModel *model = new QSqlQueryModel; // QString str; model -> setQuery("select * from Cars_Main where Reg_Numb='"+str+"'"); model->setHeaderData(0, Qt::Horizontal, tr("ID")); model->setHeaderData(1, Qt::Horizontal, tr("Марка ТС")); model->setHeaderData(2, Qt::Horizontal, tr("Рег. Номер")); model->setHeaderData(3, Qt::Horizontal, tr("Организация")); model->setHeaderData(4, Qt::Horizontal, tr("№ транспортного пропуска")); model->setHeaderData(5, Qt::Horizontal, tr("Время")); ui->tableView_io->setColumnHidden(0, true); ui->tableView_io->setColumnHidden(5, true); ui->tableView_io->setAlternatingRowColors(true); // Разрешаем выделение строк ui->tableView_io->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableView_io->resizeColumnsToContents(); }Dialog_io::~Dialog_io(){ delete ui;}void Dialog_io::on_pushButton_close_clicked(){ this -> close();}
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QSqlTableModel>#include "dialogconnect.h"#include "dialog_io.h"namespace Ui{ class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();signals: void sendData(QString str);private: Ui::MainWindow *ui; QSqlTableModel* mModel; databaseData data_; Dialog_io *io;private slots: void on_pushButton_connect_clicked(); void on_pushButton_add_clicked(); void on_pushButton_del_clicked(); void on_pushButton_view_clicked(); void on_pushButton_search_clicked(); void showTime();};#endif // MAINWINDOW_H
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <QSqlDatabase>#include <QSqlQuery>#include <QMessageBox>#include <QTimer>#include <QDateTime>#include "dialog_io.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); timer -> start(); //вставляем картинку //QPixmap pix("/home/axe/Qt5/Projects/testSql/pix/Linus.jpg"); //ui -> label_pic -> setPixmap(pix);}//запиливаем электронные часикиvoid MainWindow::showTime(){ QTime time = QTime::currentTime(); QString time_text = time.toString("hh:mm"); if ((time.second() % 2) == 0) { time_text[2] = ' '; //time_text[8] = ' '; } ui -> Digital_clock -> setText(time_text);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_pushButton_connect_clicked(){ // создаём диалог DialogConnect *dialog = new DialogConnect(); // вызываем его и запускаем цикл событий (exec). Пока диалог не будет завершён, выполнение ф-ции будет приостановлено. При завершении диалог возвращает результат в виде int. int result = dialog->exec(); // если результат успешен, то мы получаем данные соединения от диалога, устанавливаем имя таблицы в модель и выбираем результат. if (result == QDialog::Accepted) { data_ = dialog->returnData(); mModel = new QSqlTableModel(this); ui->tableView->setModel(mModel); mModel->setTable("Cars_Main"); mModel->setEditStrategy(QSqlTableModel::OnFieldChange); mModel->select(); mModel->setHeaderData(0, Qt::Horizontal, tr("ID")); mModel->setHeaderData(1, Qt::Horizontal, tr("Марка ТС")); mModel->setHeaderData(2, Qt::Horizontal, tr("Рег. Номер")); mModel->setHeaderData(3, Qt::Horizontal, tr("Организация")); mModel->setHeaderData(4, Qt::Horizontal, tr("№ транспортного пропуска")); mModel->setHeaderData(5, Qt::Horizontal, tr("Время")); //прячем столбцы ID и Time ui->tableView->setColumnHidden(0, true); ui->tableView->setColumnHidden(5, true); ui->tableView->setAlternatingRowColors(true); // Разрешаем выделение строк ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableView->resizeColumnsToContents(); } // если результат неуспешен, мы ничего не делаем}void MainWindow::on_pushButton_add_clicked(){ qDebug() << mModel->insertRow(mModel->rowCount());}void MainWindow::on_pushButton_del_clicked(){ mModel->removeRow(ui->tableView->currentIndex().row()); // после удаления в таблице остаётся пустая строка, она будет убрана при следующем select //костыль - прячем пустую строку вызовом mModel -> select() mModel->select(); }void MainWindow::on_pushButton_view_clicked(){ mModel->select();}void MainWindow::on_pushButton_search_clicked(){ QString search_reg_numb; search_reg_numb = ui -> lineEdit_search -> text(); emit sendData(ui -> lineEdit_search -> text()); QSqlQuery qry; if(qry.exec("select * from Cars_Main where Reg_Numb='"+search_reg_numb+"'")) { int count = 0; while(qry.next()) { count ++; } if(count == 1) { //QMessageBox::information (this, "Доступ разрешён", search_reg_numb, QMessageBox::Ok); io = new Dialog_io(); io -> exec(); //void on_pushButton_search_clicked(); //{ //emit sendData(ui -> lineEdit_search -> text()); //} connect(ui-> pushButton_search, SIGNAL(clicked()), this, SLOT(on_pushButton_search_clicked())); connect(this, SIGNAL(sendData(QString)), io, SLOT(recieveData(QString))); } else QMessageBox::critical (this, "Доступ запрещён!", search_reg_numb, QMessageBox::Ok); }}