4.6 KiB
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.
Использование
- Запустите приложение.
- Введите адрес сервера, порт (по умолчанию
5432), имя пользователя и пароль. - Нажмите OK. При ошибке подключения будет показано сообщение.
- Заполните поля
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.