/
seneka.y
/
ClientServer
Обзор
Документация
Войти
/
seneka.y
/
ClientServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
client/mainwindow.h
145 строк
5 KB
Julia Sinika
Initial commit
09 ноя 2025, 22:05
09 ноя 2025, 22:05
bfef146
Код
Авторство
О чём код?
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #include <QPushButton> #include <QTableWidget> #include <QVBoxLayout> #include <QTcpSocket> #include <QLabel> /** * @class MainWindow * @brief Главное окно клиентского приложения для управления пользователями * * Предоставляет GUI для подключения к серверу и выполнения операций с БД: * добавление, обновление, удаление и получение списка пользователей. */ class MainWindow : public QMainWindow { Q_OBJECT public: /** * @brief Конструктор главного окна * @param parent Родительский виджет */ explicit MainWindow(QWidget *parent = nullptr); /** * @brief Деструктор, закрывает соединение с сервером */ ~MainWindow(); private slots: /** * @brief Обработчик нажатия кнопки "Добавить" */ void onAddUserClicked(); /** * @brief Обработчик нажатия кнопки "Обновить таблицу" */ void onRefreshClicked(); /** * @brief Обработчик нажатия кнопки "Удалить" */ void onDeleteUserClicked(); /** * @brief Обработчик нажатия кнопки "Обновить" */ void onUpdateUserClicked(); /** * @brief Обработчик выбора строки в таблице */ void onTableSelectionChanged(); /** * @brief Обработчик успешного подключения к серверу */ void onConnected(); /** * @brief Обработчик отключения от сервера */ void onDisconnected(); /** * @brief Обработчик получения данных от сервера */ void onReadyRead(); /** * @brief Обработчик ошибки сокета * @param error Код ошибки */ void onSocketError(QAbstractSocket::SocketError error); private: /** * @brief Инициализировать пользовательский интерфейс */ void setupUI(); /** * @brief Подключиться к серверу */ void connectToServer(); /** * @brief Отправить JSON запрос на сервер * @param request JSON объект запроса */ void sendRequest(const QJsonObject& request); /** * @brief Обработать JSON ответ от сервера * @param data Данные ответа */ void processResponse(const QByteArray& data); /** * @brief Обновить таблицу пользователей * @param users Массив пользователей в JSON формате */ void updateUserTable(const QJsonArray& users); /** * @brief Показать сообщение пользователю * @param message Текст сообщения * @param isError Если true, сообщение об ошибке, иначе информационное */ void showMessage(const QString& message, bool isError = false); /** * @brief Очистить поля ввода */ void clearInputFields(); /** * @brief Гарантировать подключение к серверу перед отправкой запроса */ void ensureConnected(); QLineEdit* m_usernameEdit; ///< Поле ввода имени пользователя QLineEdit* m_emailEdit; ///< Поле ввода email QPushButton* m_addButton; ///< Кнопка добавления QPushButton* m_updateButton; ///< Кнопка обновления QPushButton* m_deleteButton; ///< Кнопка удаления QPushButton* m_refreshButton; ///< Кнопка обновления таблицы QTableWidget* m_userTable; ///< Таблица пользователей QLabel* m_statusLabel; ///< Метка статуса подключения QTcpSocket* m_socket; ///< Сокет для связи с сервером QString m_serverHost; ///< Хост сервера quint16 m_serverPort; ///< Порт сервера QByteArray m_receiveBuffer; ///< Буфер для накопления данных от сервера int m_selectedUserId; ///< ID выбранного в таблице пользователя int m_reconnectAttempts; ///< Количество попыток переподключения }; #endif // MAINWINDOW_H