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

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

Как создать консольное приложение на C++ в Qt Creator

Создание консольного приложения на Qt

Разработка программы для консоли на C++

”Ввод

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

  • запустить пакет Qt Creator
  • нажать кнопку +New для создания проекта
  • выбрать пункт Qt Console Application
  • назвать проект, к примеру Qt_cin_and_cout_data_by_console
  • компиллятор qmake, классы и язык оставить по умолчанию
  • комплект Desktop Qt 5.15.2 GCC 64bit (default) оставить по умолчанию
  • будут созданы файлы main.cpp и Qt_cin_and_cout_data_by_console.pro

Сборочный файл для консоли в Qt Creator с функциями SQL

    В текст кода Qt_cin_and_cout_data_by_console.pro надо добавить запись QT += sql для работы с SQL-запросами:

  • QT -= gui
    QT += sql
    CONFIG += c++11 console
    CONFIG -= app_bundle

    # 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

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


Файл с кодом для ввода и вывода текста в консоли на Qt

    Текст работающего кода из main.cpp, который подключает стандартные библиотеки и классы для вычислений и работы с базами данных, выполнения запросов SQL, а также ввода и вывода средствами языка программирования C++ cin и cout выглядит так:

  • #include "QCoreApplication"

    #include "QDebug" //для вывода информации в консоли программы Qt через использование qDebug()

    using namespace std;//подключение стандартной библиотеки функций для ввода и вывода информации стандартными средствами C++
    #include "iostream" //для ввода и вывода информации стандартными средствами C++
    #include "string" //для работы с данными типа string в C++
    #include "cmath" //подключение библиотеки с математическими функциями

    #include "QtSql/QSqlDatabase" //для создания объектов для подключения и работы баз данных в программе Qt
    #include "QSqlQuery" //для создания объектов для работы SQL-запросов
    #include "QSqlError" //для получения информации о возможных ошибках при работе с базами данных

    #include "QTextCodec" //для кодировки символов
    //используется KOI8-R или Windows-1251


    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);

    //подключение и открытие существующей базы данных
    //драйвер для работы с БД
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    //здесь должен быть путь к самой БД!!!
    db.setDatabaseName("/home/ и так далее");
    //открывает файл, указанный в db.setDatabaseName();
    db.open();

    //создание запроса
    QSqlQuery query( db );
    //работает без ввода данных
    /*
    query.prepare("SELECT * FROM basetable WHERE number=?");
    query.bindValue(0, 2);

    query.prepare("SELECT * FROM basetable WHERE number LIKE :number");
    query.bindValue(":number", 2);
    */
    //ввод значения
    string stroka;//строка C++
    cout << "Введите номер строки БД для поиска:";
    cin >> stroka;//в тип string на C++ войдет набор символов до первого пробела!
    QString Qstroka = QString::fromStdString(stroka);//перевод строки C++ в строку QString
    //работает с вводом данных
    query.prepare("SELECT * FROM basetable WHERE number LIKE :number");
    query.bindValue(":number", Qstroka);
    query.exec();
    //вывод результата запроса
    qDebug() << "Вывод результата запроса:";
    while (query.next()) {
    QString number = query.value(0).toString();
    QString content = query.value(1).toString();
    QString content1 = query.value(2).toString();
    QString content2 = query.value(3).toString();
    QString content3 = query.value(4).toString();
    qDebug() << number << "|"<< content<< "|"<< content1<< "|"<< content2<< "|"<< content3;
    }


    int x,y;//в тип char поместится только один символ

    //вводим значение
    cout << "Введите число:"<< endl;
    cin >> x;
    y=pow (x, 2);//x в степени 2
    cout <<"x в степени 2 = " << y<< endl;//вывод результата

    //создает запрос
    QSqlQuery query1( db );
    query1.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,?,?,?,?)");
    query1.bindValue(0, Qstroka);//bindValue(номер значения, само значение)
    query1.bindValue(1, x);
    query1.bindValue(2, y);
    query1.bindValue(3, x-y);
    query1.exec();

    //создает запрос
    QSqlQuery query2( db );
    query2.prepare("SELECT * FROM basetable");
    query2.bindValue(":number", Qstroka);
    query2.exec();

    //вывод результата запроса
    qDebug() << "Вывод последней записи в результате запроса:";
    query2.last();
    QString number = query2.value(0).toString();
    QString content = query2.value(1).toString();
    QString content1 = query2.value(2).toString();
    QString content2 = query2.value(3).toString();
    QString content3 = query2.value(4).toString();
    qDebug() << number << "|"<< content<< "|"<< content1<< "|"<< content2<< "|"<< content3;


    //просто для информации, это не обязательно!
    qDebug() <<"isOpen="<<db.isOpen();//если текстовый файл открыт
    qDebug() <<"connection DB exists="<< db.isValid();// если соединение осуществлено успешно
    qDebug() <<"available drivers="<<QSqlDatabase::drivers();// выводит список доступных драйверов для различных баз данных
    qDebug() <<"errors="<<db.lastError().text();//список возможных ошибок

    return a.exec();
    }

Как создать консольное приложение на C++ в Qt Creator

Создание консольного приложения на Qt

Разработка программы для консоли на C++

”Ввод

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

  • запустить пакет Qt Creator
  • нажать кнопку +New для создания проекта
  • выбрать пункт Qt Console Application
  • назвать проект, к примеру Qt_cin_and_cout_data_by_console
  • компиллятор qmake, классы и язык оставить по умолчанию
  • комплект Desktop Qt 5.15.2 GCC 64bit (default) оставить по умолчанию
  • будут созданы файлы main.cpp и Qt_cin_and_cout_data_by_console.pro

Сборочный файл для консоли в Qt Creator с функциями SQL

    В текст кода Qt_cin_and_cout_data_by_console.pro надо добавить запись QT += sql для работы с SQL-запросами:

  • QT -= gui
    QT += sql
    CONFIG += c++11 console
    CONFIG -= app_bundle

    # 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

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


Файл с кодом для ввода и вывода текста в консоли на Qt

    Текст работающего кода из main.cpp, который подключает стандартные библиотеки и классы для вычислений и работы с базами данных, выполнения запросов SQL, а также ввода и вывода средствами языка программирования C++ cin и cout выглядит так:

  • #include "QCoreApplication"

    #include "QDebug" //для вывода информации в консоли программы Qt через использование qDebug()

    using namespace std;//подключение стандартной библиотеки функций для ввода и вывода информации стандартными средствами C++
    #include "iostream" //для ввода и вывода информации стандартными средствами C++
    #include "string" //для работы с данными типа string в C++
    #include "cmath" //подключение библиотеки с математическими функциями

    #include "QtSql/QSqlDatabase" //для создания объектов для подключения и работы баз данных в программе Qt
    #include "QSqlQuery" //для создания объектов для работы SQL-запросов
    #include "QSqlError" //для получения информации о возможных ошибках при работе с базами данных

    #include "QTextCodec" //для кодировки символов
    //используется KOI8-R или Windows-1251


    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);

    //подключение и открытие существующей базы данных
    //драйвер для работы с БД
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    //здесь должен быть путь к самой БД!!!
    db.setDatabaseName("/home/ и так далее");
    //открывает файл, указанный в db.setDatabaseName();
    db.open();

    //создание запроса
    QSqlQuery query( db );
    //работает без ввода данных
    /*
    query.prepare("SELECT * FROM basetable WHERE number=?");
    query.bindValue(0, 2);

    query.prepare("SELECT * FROM basetable WHERE number LIKE :number");
    query.bindValue(":number", 2);
    */
    //ввод значения
    string stroka;//строка C++
    cout << "Введите номер строки БД для поиска:";
    cin >> stroka;//в тип string на C++ войдет набор символов до первого пробела!
    QString Qstroka = QString::fromStdString(stroka);//перевод строки C++ в строку QString
    //работает с вводом данных
    query.prepare("SELECT * FROM basetable WHERE number LIKE :number");
    query.bindValue(":number", Qstroka);
    query.exec();
    //вывод результата запроса
    qDebug() << "Вывод результата запроса:";
    while (query.next()) {
    QString number = query.value(0).toString();
    QString content = query.value(1).toString();
    QString content1 = query.value(2).toString();
    QString content2 = query.value(3).toString();
    QString content3 = query.value(4).toString();
    qDebug() << number << "|"<< content<< "|"<< content1<< "|"<< content2<< "|"<< content3;
    }


    int x,y;//в тип char поместится только один символ

    //вводим значение
    cout << "Введите число:"<< endl;
    cin >> x;
    y=pow (x, 2);//x в степени 2
    cout <<"x в степени 2 = " << y<< endl;//вывод результата

    //создает запрос
    QSqlQuery query1( db );
    query1.prepare("INSERT INTO basetable (number,name,fone,automodel,price) VALUES (NULL,?,?,?,?)");
    query1.bindValue(0, Qstroka);//bindValue(номер значения, само значение)
    query1.bindValue(1, x);
    query1.bindValue(2, y);
    query1.bindValue(3, x-y);
    query1.exec();

    //создает запрос
    QSqlQuery query2( db );
    query2.prepare("SELECT * FROM basetable");
    query2.bindValue(":number", Qstroka);
    query2.exec();

    //вывод результата запроса
    qDebug() << "Вывод последней записи в результате запроса:";
    query2.last();
    QString number = query2.value(0).toString();
    QString content = query2.value(1).toString();
    QString content1 = query2.value(2).toString();
    QString content2 = query2.value(3).toString();
    QString content3 = query2.value(4).toString();
    qDebug() << number << "|"<< content<< "|"<< content1<< "|"<< content2<< "|"<< content3;


    //просто для информации, это не обязательно!
    qDebug() <<"isOpen="<<db.isOpen();//если текстовый файл открыт
    qDebug() <<"connection DB exists="<< db.isValid();// если соединение осуществлено успешно
    qDebug() <<"available drivers="<<QSqlDatabase::drivers();// выводит список доступных драйверов для различных баз данных
    qDebug() <<"errors="<<db.lastError().text();//список возможных ошибок

    return a.exec();
    }