Go to file
Andrey Kutin 3d23aeb224 fix: changing the insert into query html for plain text 2026-10-25 12:20:15 +03:00
.gitignore ADD: base auth widget 2026-10-15 12:32:33 +03:00
CMakeLists.txt fix: include auth sources and use Qt version for Sql in CMake 2026-10-23 21:04:10 +03:00
LICENSE Initial commit 2026-10-15 08:44:24 +00:00
README.md docs: add project README 2026-10-23 21:09:09 +03:00
auth.cpp add: persist last successful connection config and show connection errors 2026-10-23 21:04:12 +03:00
auth.h add: persist last successful connection config and show connection errors 2026-10-23 21:04:12 +03:00
main.cpp add: added connect between auth and Widget 2026-10-15 19:09:17 +03:00
widget.cpp fix: changing the insert into query html for plain text 2026-10-25 12:20:15 +03:00
widget.h refactor: extract record count refresh into updateCount 2026-10-23 21:09:09 +03:00

README.md

mysitenews

Графическое приложение на Qt для заполнения таблицы random_data в PostgreSQL.

При запуске открывается окно подключения к БД. После успешного подключения появляется форма добавления записи с полями name и text, а также счётчик текущего количества записей в таблице.

Возможности

  • подключение к PostgreSQL (host, port, user, password);
  • сохранение последней успешной конфигурации подключения;
  • отображение количества записей в public.random_data;
  • добавление записей (name, text);
  • показ ошибки при неудачном подключении.

Требования

  • CMake 3.16+;
  • компилятор с поддержкой C++17;
  • Qt 5 или Qt 6 (модули Widgets и Sql);
  • драйвер PostgreSQL для Qt (QPSQL);
  • сервер PostgreSQL.

Проверить наличие драйвера можно так:

ls /usr/lib/x86_64-linux-gnu/qt6/plugins/sqldrivers/

В каталоге должен быть libqsqlpsql.so (для Qt 5 — libqsqlpsql.so в соответствующем каталоге плагинов). В Debian/Ubuntu драйвер ставится пакетом libqt6sql6-psql (для Qt 5 — libqt5sql5-psql).

Сборка и запуск

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/mysitenews

При сборке из Qt Creator используется каталог build/Desktop-Debug.

База данных

Приложение обращается к БД cards и таблице public.random_data. Ожидаемая структура таблицы:

CREATE TABLE public.random_data (
    id         serial PRIMARY KEY,
    name       varchar(100) NOT NULL,
    text       text NOT NULL,
    description text,
    created_at timestamp DEFAULT CURRENT_TIMESTAMP
);

Права пользователя

Пользователю БД нужны права на таблицу и на последовательность id:

GRANT SELECT, INSERT ON public.random_data TO cards_user;
GRANT USAGE, SELECT ON SEQUENCE public.random_data_id_seq TO cards_user;

Без прав на последовательность вставка завершится ошибкой permission denied for sequence random_data_id_seq.

Использование

  1. Запустите приложение.
  2. Введите адрес сервера, порт (по умолчанию 5432), имя пользователя и пароль.
  3. Нажмите OK. При ошибке подключения будет показано сообщение.
  4. Заполните поля name и text и нажмите ADD.

Поле text сохраняется как HTML (QTextEdit::toHtml()). Оба поля обязательны. Длина name ограничена таблицей — 100 символов.

Конфигурация

После успешного подключения параметры сохраняются через QSettings (QSettings("mysitenews", "mysitenews")). В Linux файл находится по пути:

~/.config/mysitenews/mysitenews.conf

Сохраняются db/host, db/port, db/database, db/user, db/password. При следующем запуске поля формы заполняются этими значениями.

Внимание: пароль хранится в открытом виде. Не используйте этот способ для продакшн-окружений; предпочтительнее ~/.pgpass или переменные окружения.

Структура проекта

Файл Назначение
main.cpp точка входа, связывает окно авторизации и рабочее окно
auth.h / auth.cpp окно подключения к БД, сохранение конфигурации
widget.h / widget.cpp форма добавления записей и подсчёт количества
CMakeLists.txt конфигурация сборки

Лицензия

Проект распространяется под GNU General Public License v3. Подробности — в файле LICENSE.