/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
mainwindow.h
141 строка
7 KB
user
Перенос из protected в private.
26 июл 2026, 11:40
26 июл 2026, 11:40
ef25f4d
Код
Авторство
О чём код?
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QFile> #include <QMainWindow> #include <QSet> #include <QTimer> #include <functional> #include "QtEnumPropertyManager" #include "QtVariantPropertyManager" #include "embeddablewidget.h" #include "profilerinfo.h" #include "replaywidget.h" #include "taskprogresswidget.h" namespace Ui { class MainWindowClass; } /*! * \brief Класс главного окна приложения. */ class MainWindow : public QMainWindow { Q_OBJECT friend int main(int argc, char *argv[]); /*! * \brief Привязка свойства QtProperty к переменной/методу приложения. */ struct PropertyBinding { QString label; //!< Метка свойства (ключ в mPropertiesMap и application.cfg). std::function<QVariant()> getter; //!< Чтение значения в UI. std::function<void(const QVariant &)> setter; //!< Запись значения из UI. }; public: MainWindow(); ~MainWindow() override; protected: Ui::MainWindowClass *ui; void setAlwaysWork(); void setCantDelete(); QtVariantPropertyManager *mPropertyManager; //!< Набор свойств-настроек встроенных типов. QtEnumPropertyManager *mEnumPropertyManager; //!< Набор свойств-настроек перечислений. QMap<QString, QtProperty *> mPropertiesMap; //!< Карта свойств QtProperty и их названий. void closeEvent(QCloseEvent *event) override; virtual void createReplaysSpecific() {} virtual void createPropertiesSpecific() {} virtual void createPropertyBindingsSpecific() {} virtual void propertyChangedSpecific(QtProperty *property) { Q_UNUSED(property) } virtual void createWidgetsSpecific() {} virtual void deleteWidgetsSpecific() {} virtual void createProfilerTableSpecific(int row) { Q_UNUSED(row) } virtual void updateProfilerTableSpecific(int row) { Q_UNUSED(row) } virtual void readSettingsSpecific(QSettings &settings) { Q_UNUSED(settings) } virtual void writeSettingsSpecific(QSettings &settings) { Q_UNUSED(settings) } virtual void beginLogSpecific() {} virtual void endLogSpecific() {} virtual void updateUiSpecific() {} ReplayWidget * addReplay(const QString &name, const QString &extension, const QString &signature, int version, const QList<int> &types, QIODevice::OpenMode mode = QIODevice::ReadWrite); QtProperty * addPropertyGroup(const QString &name, const QString &tooltip, const QString &label = QString(), QtProperty *root = nullptr); QtProperty * addProperty(int type, const QString &name, const QString &tooltip, const QString &label, QtProperty *root, QVariant initialValue = QVariant()); QtProperty * addEnumProperty(const QString &name, const QStringList &values, const QString &tooltip, const QString &label, QtProperty *root, QVariant initialValue = QVariant()); void addPropertyBinding(const QString &label, std::function<QVariant()> getter, std::function<void(const QVariant &)> setter); EmbeddableWidget * addEmbeddable(EmbeddableWidget *widget, const QString &name, const QString &label); EmbeddableWidget * embeddableByLabel(const QString &label); TaskProgressWidget * addTaskProgressWidget(int id, const QString &taskName); private: QList<PropertyBinding> mPropertyBindingsList; //!< Список привязок свойств QtProperty. QTimer mTimerClock; //!< Таймер отображения системного времени. QList<EmbeddableWidget *> mEmbeddableWidgets; //!< Список встраиваемых окон. QFile mLogFile; //!< Файл, содержащий историю операций за сутки. QMap<QtProperty *, QVariant> mPropertyDefaultValuesMap; //!< Карта свойств QtProperty и их значений по умолчанию. QList<QtProperty *> mChangedPropertiesList; //!< Список измененных свойств QtProperty. QMap<int, TaskProgressWidget *> mTaskProgressWidgetsMap; //!< Карта виджетов отображения прогресса задачи и их идентификаторов. bool mQuitOnEndRead = false; //!< Признак закрытия приложения по завершении воспроизведения. void initMainWindow(); void createReplays(); void deleteReplays(); void createProperties(); void deleteProperties(); void setPropertiesValues(const QList<QtProperty *> &list); void applyPropertiesValues(const QList<QtProperty *> &list); void logPropertiesValues(const QList<QtProperty *> &list, const QString &indent = "\t"); void resetPropertiesHighlighting(const QList<QtProperty *> &list); void createWidgets(); void deleteWidgets(); void createConnectionsTable(); void createProfilerTable(); void readSettings(); void writeSettings(); void beginLog(); void endLog(); void writeProperties(); void saveString(const QString &string); void readStoredProperiesValues(); protected slots: void logString(const QString &string, bool time = true); private slots: void updateUi(); void updateConnectionsTable(int eventId, int senderId = -1); void updateProfilerTable(); void iterationDone(const QSet<int> &results); void setPropertyValue(const QString &, const QString &, bool, bool &); void setPropertyValue(const QString &, const QVariant &, bool, bool &); void on_actionWork_triggered(bool checked); void on_actionDelete_triggered(); void on_toolbuttonCancelChange_clicked(); void on_toolbuttonApplyChange_clicked(); void on_treePropertyBrowser_currentItemChanged(QtBrowserItem *); void on_actionSavePropertiesValues_triggered(); void on_actionRestoreDefaults_triggered(); void on_actionReplay_triggered(); void on_actionProfiler_triggered(); void on_toolbuttonToggleEmbedded_clicked(); void slot_propertyChanged(QtProperty *); void slot_timerClock_timeout(); void slot_replayWidget_beginRead(const QString &); void slot_replayWidget_endRead(const QString &); void slot_replayWidget_beginWrite(const QString &); void slot_replayWidget_endWrite(const QString &); void slot_widgetConnectionAddress_change(int); void slot_embeddableWidget_embedMe(bool); void slot_storePropertiesValuesDialog_accepted(); void slot_restoreStoredPropertiesValues_triggered(); void slot_removeStoredPropertiesValues_triggered(); void on_actionVersion_triggered(); void slot_taskProgressBegin(int id, int total); void slot_taskProgressStep(int id, int count, int total); void slot_taskProgressEnd(int id); }; #endif // MAINWINDOW_H