Подсказки на компьютерную тематику

Можно подсмотреть, если забыли…

Как создать пример простой графической программы на C++ с Qt и базой данных SQLite

Создание программы с графическим интерфейсом в системе QT с подключением к базе данных SQLite

    Для создания проекта следует:

  • открыть Qt Creator
  • выбрать пункт Qt Widgets Application
  • прописать название нового каталога для создаваемого приложения, к примеру fordbwork
  • компилятор Build system оставить по умолчанию qmake
  • классы и язык оставить по умолчанию
  • комплект Desktop Qt 5.14.2 GCC 64bit (default) оставить как есть
  • автоматически должны быть созданы файлы:
  • fordbwork.pro,main.cpp,mainwindow.cpp,mainwindow.h и mainwindow.ui

Рабочий пример графической программы в Qt и БД SQLite

    Существующий стандартный код следует дополнить так:

  • в файл fordbwork.pro подключить класс для работы с SQL
  • QT += sql
  • и файл будет выглядеть так

    QT += core gui sql

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    CONFIG += c++11

    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

    SOURCES += \
    main.cpp \
    mainwindow.cpp

    HEADERS += \
    mainwindow.h

    FORMS += \
    mainwindow.ui

    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target

  • в файл mainwindow.h подключить классы для работы с SQL и базой данных
  • #include <QtSql> и #include <QSqlDatabase>
  • в классе class MainWindow : public QMainWindow создаем слоты для функций
  • private slots:
    void inserttodb();// это созданный нами слот для внесения данных в БД
    void selectfromdb();// это созданный нами слот для получения данных из БД
    void gettingexpierence();// это созданный нами слот для вариантов работы с БД
  • файл будет выглядеть вот так:

  • #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include <QtSql>
    #include <QSqlDatabase>

    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    private:
    Ui::MainWindow *ui;

    private slots:
    void inserttodb();// это созданный нами слот для внесения данных в БД
    void selectfromdb();// это созданный нами слот для получения данных из БД
    void gettingexpierence();// это созданный нами слот для вариантов работы с БД

    };
    #endif // MAINWINDOW_H

  • в файл main.cpp подключить классы для работы с SQL – БД и запросами:

  • #include "QtSql/QSqlDatabase"
    #include "QSqlQuery"
    #include "QtSql"
    #include "QTableView"
  • файл будет выглядеть так:

  • #include "mainwindow.h"
    #include "QtSql/QSqlDatabase"
    #include "QSqlQuery"
    #include "QtSql"
    #include "QTableView"

    #include "QApplication"

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
    }

  • в файле дизайна программы mainwindow.ui создаем элементы интерфейса:
  • Для ввода в БД – так как в существующей БД уже имеется пять полей, одно из которых автозаполняемое, создаем четыре поля класса QLineEditlineEdit,lineEdit_2,lineEdit_3 и lineEdit_4 и кнопки класса QPushButtonpushButton, pushButton_2 и pushButton_3
  • Для вывода из БД создаем поля класса QTextEdittextEdit и textEdit_2
  • в файл mainwindow.cpp в методе MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
    прописать функции connect() для подключения функций к графическим элементам

  • MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(inserttodb())); //для внесения данных в БД
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(selectfromdb())); //для получения данных из БД
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(gettingexpierence())); //для получения опыта работы с БД

    }
  • в начале файла вводим подключение к драйверу базы данных:

  • /*для исправления ошибки QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed
    подключать драйвер для БД (обычно доступно несколько драйверов, их список содержится в стандартном методе QSqlDatabase::drivers();)
    следует в глобальной переменной static (видно везде в одном файле) или extern (видно везде во всех файлах) */
    static QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это статическая глобальная переменная, которую можно использовать только в этом файле

  • в конце файла вводим описание этих функций:

  • void MainWindow::inserttodb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    QString name=ui->lineEdit->text();//имя
    QString fone=ui->lineEdit_2->text();//номер телефона
    QString automodel=ui->lineEdit_3->text();//модель авто
    QString price=ui->lineEdit_4->text();//стоимость

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,:name,:fone,:automodel,:price)");

    query.bindValue(":name", name);
    query.bindValue(":fone", fone);
    query.bindValue(":automodel", automodel);
    query.bindValue(":price", price);
    query.exec();

    //закрыть БД
    db.close();
    }

    void MainWindow::selectfromdb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    //Вывод всех значений из БД
    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Вывод всех строк из таблицы БД
    }

    //закрыть БД
    db.close();
    }

    void MainWindow::gettingexpierence(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit_2->append(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит все строки из таблицы БД с небольшим интервалом между ними
    //ui->textEdit_2->setText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит только последнюю строку из таблицы БД
    //ui->textEdit_2->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Выводит все строки из таблицы БД
    }

    //проверка работы запроса к БД
    if (query.isActive()){
    ui->label_2->setText("Запрос сработал!");
    }
    else {
    ui->label_2->setText(query.lastError().text());
    }
    //закрыть БД
    db.close();
    }

  • весь файл будет выглядеть так:

  • #include "mainwindow.h"
    #include "ui_mainwindow.h"

    #include "QTableView"//добавлено для вывода БД в таблице
    #include "QStandardItemModel"//добавлено для вывода БД в таблице
    #include "QStandardItem"//добавлено для вывода БД в таблице

    /*для исправления ошибки QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed
    подключать драйвер для БД (обычно доступно несколько драйверов, их список содержится в стандартном методе QSqlDatabase::drivers();)
    следует в глобальной переменной static (видно везде в одном файле) или extern (видно везде во всех файлах) */
    static QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это статическая глобальная переменная, которую можно использовать только в этом файле

    MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(inserttodb())); //для внесения данных в БД
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(selectfromdb())); //для получения данных из БД
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(gettingexpierence())); //для получения опыта работы с БД

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }


    void MainWindow::inserttodb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    QString name=ui->lineEdit->text();//имя
    QString fone=ui->lineEdit_2->text();//номер телефона
    QString automodel=ui->lineEdit_3->text();//модель авто
    QString price=ui->lineEdit_4->text();//стоимость

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,:name,:fone,:automodel,:price)");

    query.bindValue(":name", name);
    query.bindValue(":fone", fone);
    query.bindValue(":automodel", automodel);
    query.bindValue(":price", price);
    query.exec();

    //закрыть БД
    db.close();
    }

    void MainWindow::selectfromdb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    //Вывод всех значений из БД
    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Вывод всех строк из таблицы БД
    }

    //закрыть БД
    db.close();
    }

    void MainWindow::gettingexpierence(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit_2->append(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит все строки из таблицы БД с небольшим интервалом между ними
    //ui->textEdit_2->setText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит только последнюю строку из таблицы БД
    //ui->textEdit_2->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Выводит все строки из таблицы БД
    }

    //проверка работы запроса к БД
    if (query.isActive()){
    ui->label_2->setText("Запрос сработал!");
    }
    else {
    ui->label_2->setText(query.lastError().text());
    }
    //закрыть БД
    db.close();
    }

Как создать пример простой графической программы на C++ с Qt и базой данных SQLite

Создание программы с графическим интерфейсом в системе QT с подключением к базе данных SQLite

    Для создания проекта следует:

  • открыть Qt Creator
  • выбрать пункт Qt Widgets Application
  • прописать название нового каталога для создаваемого приложения, к примеру fordbwork
  • компилятор Build system оставить по умолчанию qmake
  • классы и язык оставить по умолчанию
  • комплект Desktop Qt 5.14.2 GCC 64bit (default) оставить как есть
  • автоматически должны быть созданы файлы:
  • fordbwork.pro,main.cpp,mainwindow.cpp,mainwindow.h и mainwindow.ui

Рабочий пример графической программы в Qt и БД SQLite

    Существующий стандартный код следует дополнить так:

  • в файл fordbwork.pro подключить класс для работы с SQL
  • QT += sql
  • и файл будет выглядеть так

    QT += core gui sql

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    CONFIG += c++11

    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

    SOURCES += \
    main.cpp \
    mainwindow.cpp

    HEADERS += \
    mainwindow.h

    FORMS += \
    mainwindow.ui

    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target

  • в файл mainwindow.h подключить классы для работы с SQL и базой данных
  • #include <QtSql> и #include <QSqlDatabase>
  • в классе class MainWindow : public QMainWindow создаем слоты для функций
  • private slots:
    void inserttodb();// это созданный нами слот для внесения данных в БД
    void selectfromdb();// это созданный нами слот для получения данных из БД
    void gettingexpierence();// это созданный нами слот для вариантов работы с БД
  • файл будет выглядеть вот так:

  • #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include <QtSql>
    #include <QSqlDatabase>

    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    private:
    Ui::MainWindow *ui;

    private slots:
    void inserttodb();// это созданный нами слот для внесения данных в БД
    void selectfromdb();// это созданный нами слот для получения данных из БД
    void gettingexpierence();// это созданный нами слот для вариантов работы с БД

    };
    #endif // MAINWINDOW_H

  • в файл main.cpp подключить классы для работы с SQL – БД и запросами:

  • #include "QtSql/QSqlDatabase"
    #include "QSqlQuery"
    #include "QtSql"
    #include "QTableView"
  • файл будет выглядеть так:

  • #include "mainwindow.h"
    #include "QtSql/QSqlDatabase"
    #include "QSqlQuery"
    #include "QtSql"
    #include "QTableView"

    #include "QApplication"

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
    }

  • в файле дизайна программы mainwindow.ui создаем элементы интерфейса:
  • Для ввода в БД – так как в существующей БД уже имеется пять полей, одно из которых автозаполняемое, создаем четыре поля класса QLineEditlineEdit,lineEdit_2,lineEdit_3 и lineEdit_4 и кнопки класса QPushButtonpushButton, pushButton_2 и pushButton_3
  • Для вывода из БД создаем поля класса QTextEdittextEdit и textEdit_2
  • в файл mainwindow.cpp в методе MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
    прописать функции connect() для подключения функций к графическим элементам

  • MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(inserttodb())); //для внесения данных в БД
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(selectfromdb())); //для получения данных из БД
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(gettingexpierence())); //для получения опыта работы с БД

    }
  • в начале файла вводим подключение к драйверу базы данных:

  • /*для исправления ошибки QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed
    подключать драйвер для БД (обычно доступно несколько драйверов, их список содержится в стандартном методе QSqlDatabase::drivers();)
    следует в глобальной переменной static (видно везде в одном файле) или extern (видно везде во всех файлах) */
    static QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это статическая глобальная переменная, которую можно использовать только в этом файле

  • в конце файла вводим описание этих функций:

  • void MainWindow::inserttodb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    QString name=ui->lineEdit->text();//имя
    QString fone=ui->lineEdit_2->text();//номер телефона
    QString automodel=ui->lineEdit_3->text();//модель авто
    QString price=ui->lineEdit_4->text();//стоимость

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,:name,:fone,:automodel,:price)");

    query.bindValue(":name", name);
    query.bindValue(":fone", fone);
    query.bindValue(":automodel", automodel);
    query.bindValue(":price", price);
    query.exec();

    //закрыть БД
    db.close();
    }

    void MainWindow::selectfromdb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    //Вывод всех значений из БД
    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Вывод всех строк из таблицы БД
    }

    //закрыть БД
    db.close();
    }

    void MainWindow::gettingexpierence(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit_2->append(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит все строки из таблицы БД с небольшим интервалом между ними
    //ui->textEdit_2->setText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит только последнюю строку из таблицы БД
    //ui->textEdit_2->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Выводит все строки из таблицы БД
    }

    //проверка работы запроса к БД
    if (query.isActive()){
    ui->label_2->setText("Запрос сработал!");
    }
    else {
    ui->label_2->setText(query.lastError().text());
    }
    //закрыть БД
    db.close();
    }

  • весь файл будет выглядеть так:

  • #include "mainwindow.h"
    #include "ui_mainwindow.h"

    #include "QTableView"//добавлено для вывода БД в таблице
    #include "QStandardItemModel"//добавлено для вывода БД в таблице
    #include "QStandardItem"//добавлено для вывода БД в таблице

    /*для исправления ошибки QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed
    подключать драйвер для БД (обычно доступно несколько драйверов, их список содержится в стандартном методе QSqlDatabase::drivers();)
    следует в глобальной переменной static (видно везде в одном файле) или extern (видно везде во всех файлах) */
    static QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это статическая глобальная переменная, которую можно использовать только в этом файле

    MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(inserttodb())); //для внесения данных в БД
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(selectfromdb())); //для получения данных из БД
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(gettingexpierence())); //для получения опыта работы с БД

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }


    void MainWindow::inserttodb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    QString name=ui->lineEdit->text();//имя
    QString fone=ui->lineEdit_2->text();//номер телефона
    QString automodel=ui->lineEdit_3->text();//модель авто
    QString price=ui->lineEdit_4->text();//стоимость

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,:name,:fone,:automodel,:price)");

    query.bindValue(":name", name);
    query.bindValue(":fone", fone);
    query.bindValue(":automodel", automodel);
    query.bindValue(":price", price);
    query.exec();

    //закрыть БД
    db.close();
    }

    void MainWindow::selectfromdb(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    //Вывод всех значений из БД
    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Вывод всех строк из таблицы БД
    }

    //закрыть БД
    db.close();
    }

    void MainWindow::gettingexpierence(){
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    //открывает базу данных, указанную в db.setDatabaseName("/home/mishanyya/fordbwork/examplebdfordbwork");
    db.open();

    //создает объект для запросов SQL
    QSqlQuery query( db );

    query.exec("SELECT * FROM basetable");

    while (query.next())
    {
    QString value_0 = query.value(0).toString();//value(0)-элемент 0 массива вывода
    QString value_1 = query.value(1).toString();//value(1)-элемент 1 массива вывода
    QString value_2 = query.value(2).toString();//value(2)-элемент 2 массива вывода
    QString value_3 = query.value(3).toString();//value(3)-элемент 3 массива вывода
    QString value_4 = query.value(4).toString();//value(4)-элемент 4 массива вывода

    ui->textEdit_2->append(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит все строки из таблицы БД с небольшим интервалом между ними
    //ui->textEdit_2->setText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");// Выводит только последнюю строку из таблицы БД
    //ui->textEdit_2->insertPlainText(value_0+" "+value_1+" "+value_2+" "+value_3+" "+value_4+"\n");//Выводит все строки из таблицы БД
    }

    //проверка работы запроса к БД
    if (query.isActive()){
    ui->label_2->setText("Запрос сработал!");
    }
    else {
    ui->label_2->setText(query.lastError().text());
    }
    //закрыть БД
    db.close();
    }