/
MaximU
/
example.application
Обзор
Документация
Войти
/
MaximU
/
example.application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/examplemainwindow.cpp
234 строки
8 KB
user
В объявлении указателей и ссылок удалены пробелы между */& и именем
26 июл 2026, 11:45
26 июл 2026, 11:45
7d3f8fb
Код
Авторство
О чём код?
#include "examplemainwindow.h" #include "applicationspecifics.h" #include "exchangeinfotypes.h" #include "ui_mainwindow.h" //// Виджеты отображения. #include "somewidget.h" //// extern ProfilerInfoClass gProfilerInfo; //!< Информация о выполнении алгоритмических блоков. extern bool gParam0; //!< Параметр 0. extern int gParam1; //!< Параметр 1. extern double gParam2; //!< Параметр 2. extern QString gParam3; //!< Параметр 3. extern EnumParameter4 gParam4; //!< Параметр 4. //// /*! * \brief Конструктор. */ ExampleMainWindow::ExampleMainWindow() : MainWindow() { } /*! Восстанавливает настройки главного окна программы. \param settings Экземпляр класса сохранения и восстановления настроек. */ void ExampleMainWindow::readSettingsSpecific(QSettings &settings) { Q_UNUSED(settings) } /*! * \brief Начинает журнал. */ void ExampleMainWindow::beginLogSpecific() { logString(tr("Если нужно")); } /*! * \brief Создает виджеты записи/воспроизведения. */ void ExampleMainWindow::createReplaysSpecific() { //// Добавление записи/воспризведения. addReplay(tr("Источник 1"), "src1", "SRC1", ExchangeInfoVersionInput, {ExchangeInfoType1}); addReplay(tr("Источник 2"), "src2", "SRC2", ExchangeInfoVersionInput, {ExchangeInfoType2}); addReplay(tr("Несколько"), "src", "SRC", ExchangeInfoVersionInput, {ExchangeInfoType1, ExchangeInfoType2}); } /*! * \brief Создает дерево свойств QtProperties программы. */ void ExampleMainWindow::createPropertiesSpecific() { QtProperty *root = nullptr; QtProperty *root1 = nullptr; QtVariantProperty *property = nullptr; //// Добавление property типа bool. addProperty(QVariant::Bool, tr("param0"), tr("Описание параметра 0 тип bool"), "param0", nullptr, gParam0); //// Добавление группы. root = addPropertyGroup(tr("Группа"), tr("Описание группы")); ui->treePropertyBrowser->setExpanded(ui->treePropertyBrowser->items(root).first(), false); //// Добавление группы второго уровня. root1 = addProperty(QtVariantPropertyManager::groupTypeId(), tr("Числа"), QString("Группа чисел"), "numbers", root); //// Добавление property типа int. property = (QtVariantProperty *)addProperty(QVariant::Int, tr("Параметр 1"), tr("Описание параметра 1 тип int."), "param1", root1); // Без значения по умолчанию. property->setAttribute("minimum", 1); property->setAttribute("maximum", 1000); //// Добавление property типа double (float). property = (QtVariantProperty *)addProperty(QVariant::Double, tr("Параметр 2"), tr("Описание параметра 2 тип double."), "param2", root1, gParam2); property->setAttribute("minimum", -1000.0); property->setAttribute("maximum", 1000.0); //// Добавление property типа QString. property = (QtVariantProperty *)addProperty(QVariant::String, tr("Параметр 3"), tr("Описание параметра 3 тип QString."), "param3", root, gParam3); //// Добавление property типа enum. addEnumProperty(tr("Параметр 4"), QStringList() << tr("А") << tr("Б"), tr("Описание параметра 4 тип enum."), "param4", nullptr, gParam4); } /*! * \brief Создает таблицу привязок свойств QtProperty. */ void ExampleMainWindow::createPropertyBindingsSpecific() { addPropertyBinding("param0", []() { return QVariant(gParam0); }, [](const QVariant &value) { gParam0 = value.toBool(); }); addPropertyBinding("param1", []() { return QVariant(gParam1); }, [](const QVariant &value) { gParam1 = value.toInt(); }); addPropertyBinding("param2", []() { return QVariant(gParam2); }, [](const QVariant &value) { gParam2 = value.toDouble(); }); addPropertyBinding("param3", []() { return QVariant(gParam3); }, [](const QVariant &value) { gParam3 = value.toString(); }); addPropertyBinding("param4", []() { return QVariant(gParam4); }, [](const QVariant &value) { gParam4 = (EnumParameter4)value.toInt(); }); } /*! * \brief Выполняется при изменении свойства QtProperty. * \param property Измененное свойство QtProperty. */ void ExampleMainWindow::propertyChangedSpecific(QtProperty *property) { if (property == mPropertiesMap["param1"] || property == mPropertiesMap["param2"]) { double sum = mPropertyManager->value(mPropertiesMap["param1"]).toInt() + mPropertyManager->value(mPropertiesMap["param2"]).toDouble(); mPropertiesMap["numbers"]->setPropertyName(tr("Числа (сумма: %1)").arg(sum)); } } /*! * \brief Создает дополнительные окна. */ void ExampleMainWindow::createWidgetsSpecific() { //// Добавление встраиваемых виджетов. addEmbeddable(new SomeWidget(this), tr("Виджет 1"), "someWidget1"); addEmbeddable(new SomeWidget(this), tr("Виджет 2"), "someWidget2"); } /*! * \brief Удаляет дополнительные окна. */ void ExampleMainWindow::deleteWidgetsSpecific() { } /*! * \brief Создает таблицу полей профайлера. * \param row Индекс первой добавляемой строки. */ void ExampleMainWindow::createProfilerTableSpecific(int row) { ui->tablewidgetProfiler->insertRow(row); ui->tablewidgetProfiler->setItem(row, 0, new QTableWidgetItem(tr("Счетчик 1"))); ui->tablewidgetProfiler->setItem(row, 1, new QTableWidgetItem()); row ++; ui->tablewidgetProfiler->insertRow(row); ui->tablewidgetProfiler->setItem(row, 0, new QTableWidgetItem(tr("Счетчик 2"))); ui->tablewidgetProfiler->setItem(row, 1, new QTableWidgetItem()); row ++; ui->tablewidgetProfiler->insertRow(row); ui->tablewidgetProfiler->setItem(row, 0, new QTableWidgetItem(tr("Время 1, [мс]"))); ui->tablewidgetProfiler->setItem(row, 1, new QTableWidgetItem()); row ++; ui->tablewidgetProfiler->insertRow(row); ui->tablewidgetProfiler->setItem(row, 0, new QTableWidgetItem(tr("Время 2, [мс]"))); ui->tablewidgetProfiler->setItem(row, 1, new QTableWidgetItem()); row ++; } /*! * \brief Заполняет таблицу полей профайлера. * \param row Индекс первой заполняемой строки. */ void ExampleMainWindow::updateProfilerTableSpecific(int row) { ui->tablewidgetProfiler->item(row, 1)->setText(QString::number(gProfilerInfo.processedCycleCount1)); row ++; ui->tablewidgetProfiler->item(row, 1)->setText(QString::number(gProfilerInfo.processedCycleCount2)); row ++; ui->tablewidgetProfiler->item(row, 1)->setText(QString::number(gProfilerInfo.timeIteration1)); row ++; ui->tablewidgetProfiler->item(row, 1)->setText(QString::number(gProfilerInfo.timeIteration2)); row ++; } /*! Обновляет пользовательский интерфейс. */ void ExampleMainWindow::updateUiSpecific() { }