Beautifulizing flowlayout done
This commit is contained in:
parent
4de8b88fee
commit
037e77f082
@ -28,8 +28,9 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
|||||||
${PROJECT_SOURCES}
|
${PROJECT_SOURCES}
|
||||||
resources.qrc
|
resources.qrc
|
||||||
sensorwidget.h sensorwidget.cpp
|
sensorwidget.h sensorwidget.cpp
|
||||||
sensorlayout.h sensorlayout.cpp
|
|
||||||
httpclient.h httpclient.cpp
|
httpclient.h httpclient.cpp
|
||||||
|
flowlayout.h flowlayout.cpp
|
||||||
|
|
||||||
)
|
)
|
||||||
# Define target properties for Android with Qt 6 as:
|
# Define target properties for Android with Qt 6 as:
|
||||||
|
Binary file not shown.
@ -17,6 +17,7 @@
|
|||||||
#include <QtWidgets/QLabel>
|
#include <QtWidgets/QLabel>
|
||||||
#include <QtWidgets/QLineEdit>
|
#include <QtWidgets/QLineEdit>
|
||||||
#include <QtWidgets/QMainWindow>
|
#include <QtWidgets/QMainWindow>
|
||||||
|
#include <QtWidgets/QScrollArea>
|
||||||
#include <QtWidgets/QSpacerItem>
|
#include <QtWidgets/QSpacerItem>
|
||||||
#include <QtWidgets/QStatusBar>
|
#include <QtWidgets/QStatusBar>
|
||||||
#include <QtWidgets/QTabWidget>
|
#include <QtWidgets/QTabWidget>
|
||||||
@ -37,7 +38,6 @@ public:
|
|||||||
QLabel *group;
|
QLabel *group;
|
||||||
QLabel *showHidden;
|
QLabel *showHidden;
|
||||||
QSpacerItem *horizontalSpacer_4;
|
QSpacerItem *horizontalSpacer_4;
|
||||||
QSpacerItem *horizontalSpacer;
|
|
||||||
QHBoxLayout *selectLayout;
|
QHBoxLayout *selectLayout;
|
||||||
QComboBox *showHiddenSelect;
|
QComboBox *showHiddenSelect;
|
||||||
QComboBox *groupSelect;
|
QComboBox *groupSelect;
|
||||||
@ -48,6 +48,21 @@ public:
|
|||||||
QVBoxLayout *sensorsLayout;
|
QVBoxLayout *sensorsLayout;
|
||||||
QWidget *incidentsTab;
|
QWidget *incidentsTab;
|
||||||
QGridLayout *gridLayout_8;
|
QGridLayout *gridLayout_8;
|
||||||
|
QScrollArea *scrollArea;
|
||||||
|
QWidget *scrollAreaWidgetContents;
|
||||||
|
QVBoxLayout *verticalLayout_2;
|
||||||
|
QHBoxLayout *horizontalLayout_3;
|
||||||
|
QLabel *label_2;
|
||||||
|
QLabel *label;
|
||||||
|
QSpacerItem *horizontalSpacer_7;
|
||||||
|
QHBoxLayout *horizontalLayout_2;
|
||||||
|
QComboBox *comboBox_2;
|
||||||
|
QComboBox *comboBox;
|
||||||
|
QSpacerItem *horizontalSpacer_8;
|
||||||
|
QHBoxLayout *horizontalLayout;
|
||||||
|
QLineEdit *lineEdit;
|
||||||
|
QSpacerItem *horizontalSpacer;
|
||||||
|
QHBoxLayout *asd;
|
||||||
QWidget *journalTab;
|
QWidget *journalTab;
|
||||||
QGridLayout *gridLayout_7;
|
QGridLayout *gridLayout_7;
|
||||||
QWidget *statisticsTab;
|
QWidget *statisticsTab;
|
||||||
@ -70,7 +85,7 @@ public:
|
|||||||
MainWindow->setMaximumSize(QSize(16777215, 16777215));
|
MainWindow->setMaximumSize(QSize(16777215, 16777215));
|
||||||
MainWindow->setBaseSize(QSize(0, 0));
|
MainWindow->setBaseSize(QSize(0, 0));
|
||||||
MainWindow->setStyleSheet(QString::fromUtf8(""));
|
MainWindow->setStyleSheet(QString::fromUtf8(""));
|
||||||
MainWindow->setTabShape(QTabWidget::Rounded);
|
MainWindow->setTabShape(QTabWidget::TabShape::Rounded);
|
||||||
centralwidget = new QWidget(MainWindow);
|
centralwidget = new QWidget(MainWindow);
|
||||||
centralwidget->setObjectName("centralwidget");
|
centralwidget->setObjectName("centralwidget");
|
||||||
centralwidget->setAutoFillBackground(false);
|
centralwidget->setAutoFillBackground(false);
|
||||||
@ -84,7 +99,12 @@ public:
|
|||||||
gridLayout_4->setContentsMargins(0, 0, 0, 0);
|
gridLayout_4->setContentsMargins(0, 0, 0, 0);
|
||||||
tabWidget = new QTabWidget(centralwidget);
|
tabWidget = new QTabWidget(centralwidget);
|
||||||
tabWidget->setObjectName("tabWidget");
|
tabWidget->setObjectName("tabWidget");
|
||||||
tabWidget->setMinimumSize(QSize(0, 0));
|
QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Expanding);
|
||||||
|
sizePolicy1.setHorizontalStretch(0);
|
||||||
|
sizePolicy1.setVerticalStretch(0);
|
||||||
|
sizePolicy1.setHeightForWidth(tabWidget->sizePolicy().hasHeightForWidth());
|
||||||
|
tabWidget->setSizePolicy(sizePolicy1);
|
||||||
|
tabWidget->setMinimumSize(QSize(488, 60));
|
||||||
tabWidget->setAutoFillBackground(false);
|
tabWidget->setAutoFillBackground(false);
|
||||||
tabWidget->setStyleSheet(QString::fromUtf8("QTabBar::tab{\n"
|
tabWidget->setStyleSheet(QString::fromUtf8("QTabBar::tab{\n"
|
||||||
" background: #dcd174;\n"
|
" background: #dcd174;\n"
|
||||||
@ -115,11 +135,11 @@ public:
|
|||||||
"}"));
|
"}"));
|
||||||
sensorsTab = new QWidget();
|
sensorsTab = new QWidget();
|
||||||
sensorsTab->setObjectName("sensorsTab");
|
sensorsTab->setObjectName("sensorsTab");
|
||||||
QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
sizePolicy1.setHorizontalStretch(0);
|
sizePolicy2.setHorizontalStretch(0);
|
||||||
sizePolicy1.setVerticalStretch(0);
|
sizePolicy2.setVerticalStretch(0);
|
||||||
sizePolicy1.setHeightForWidth(sensorsTab->sizePolicy().hasHeightForWidth());
|
sizePolicy2.setHeightForWidth(sensorsTab->sizePolicy().hasHeightForWidth());
|
||||||
sensorsTab->setSizePolicy(sizePolicy1);
|
sensorsTab->setSizePolicy(sizePolicy2);
|
||||||
sensorsTab->setMinimumSize(QSize(0, 0));
|
sensorsTab->setMinimumSize(QSize(0, 0));
|
||||||
sensorsTab->setStyleSheet(QString::fromUtf8("#sensorsTab {\n"
|
sensorsTab->setStyleSheet(QString::fromUtf8("#sensorsTab {\n"
|
||||||
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
||||||
@ -129,20 +149,20 @@ public:
|
|||||||
SensorsTabLayout = new QVBoxLayout(sensorsTab);
|
SensorsTabLayout = new QVBoxLayout(sensorsTab);
|
||||||
SensorsTabLayout->setSpacing(10);
|
SensorsTabLayout->setSpacing(10);
|
||||||
SensorsTabLayout->setObjectName("SensorsTabLayout");
|
SensorsTabLayout->setObjectName("SensorsTabLayout");
|
||||||
SensorsTabLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
|
SensorsTabLayout->setSizeConstraint(QLayout::SizeConstraint::SetDefaultConstraint);
|
||||||
SensorsTabLayout->setContentsMargins(0, 25, 0, 0);
|
SensorsTabLayout->setContentsMargins(0, 25, 0, 0);
|
||||||
nameLayout = new QHBoxLayout();
|
nameLayout = new QHBoxLayout();
|
||||||
nameLayout->setSpacing(15);
|
nameLayout->setSpacing(15);
|
||||||
nameLayout->setObjectName("nameLayout");
|
nameLayout->setObjectName("nameLayout");
|
||||||
nameLayout->setSizeConstraint(QLayout::SetFixedSize);
|
nameLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize);
|
||||||
nameLayout->setContentsMargins(25, -1, -1, -1);
|
nameLayout->setContentsMargins(25, -1, -1, -1);
|
||||||
group = new QLabel(sensorsTab);
|
group = new QLabel(sensorsTab);
|
||||||
group->setObjectName("group");
|
group->setObjectName("group");
|
||||||
QSizePolicy sizePolicy2(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
QSizePolicy sizePolicy3(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
sizePolicy2.setHorizontalStretch(0);
|
sizePolicy3.setHorizontalStretch(0);
|
||||||
sizePolicy2.setVerticalStretch(0);
|
sizePolicy3.setVerticalStretch(0);
|
||||||
sizePolicy2.setHeightForWidth(group->sizePolicy().hasHeightForWidth());
|
sizePolicy3.setHeightForWidth(group->sizePolicy().hasHeightForWidth());
|
||||||
group->setSizePolicy(sizePolicy2);
|
group->setSizePolicy(sizePolicy3);
|
||||||
group->setMinimumSize(QSize(488, 36));
|
group->setMinimumSize(QSize(488, 36));
|
||||||
group->setStyleSheet(QString::fromUtf8("width: 488px;\n"
|
group->setStyleSheet(QString::fromUtf8("width: 488px;\n"
|
||||||
"height: 36px;\n"
|
"height: 36px;\n"
|
||||||
@ -159,8 +179,8 @@ public:
|
|||||||
|
|
||||||
showHidden = new QLabel(sensorsTab);
|
showHidden = new QLabel(sensorsTab);
|
||||||
showHidden->setObjectName("showHidden");
|
showHidden->setObjectName("showHidden");
|
||||||
sizePolicy2.setHeightForWidth(showHidden->sizePolicy().hasHeightForWidth());
|
sizePolicy3.setHeightForWidth(showHidden->sizePolicy().hasHeightForWidth());
|
||||||
showHidden->setSizePolicy(sizePolicy2);
|
showHidden->setSizePolicy(sizePolicy3);
|
||||||
showHidden->setMinimumSize(QSize(275, 36));
|
showHidden->setMinimumSize(QSize(275, 36));
|
||||||
showHidden->setStyleSheet(QString::fromUtf8("width: 275px;\n"
|
showHidden->setStyleSheet(QString::fromUtf8("width: 275px;\n"
|
||||||
"height: 36px;\n"
|
"height: 36px;\n"
|
||||||
@ -179,22 +199,18 @@ public:
|
|||||||
|
|
||||||
nameLayout->addItem(horizontalSpacer_4);
|
nameLayout->addItem(horizontalSpacer_4);
|
||||||
|
|
||||||
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
nameLayout->addItem(horizontalSpacer);
|
|
||||||
|
|
||||||
|
|
||||||
SensorsTabLayout->addLayout(nameLayout);
|
SensorsTabLayout->addLayout(nameLayout);
|
||||||
|
|
||||||
selectLayout = new QHBoxLayout();
|
selectLayout = new QHBoxLayout();
|
||||||
selectLayout->setSpacing(15);
|
selectLayout->setSpacing(15);
|
||||||
selectLayout->setObjectName("selectLayout");
|
selectLayout->setObjectName("selectLayout");
|
||||||
selectLayout->setSizeConstraint(QLayout::SetFixedSize);
|
selectLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize);
|
||||||
selectLayout->setContentsMargins(25, -1, -1, 10);
|
selectLayout->setContentsMargins(25, -1, -1, 10);
|
||||||
showHiddenSelect = new QComboBox(sensorsTab);
|
showHiddenSelect = new QComboBox(sensorsTab);
|
||||||
showHiddenSelect->setObjectName("showHiddenSelect");
|
showHiddenSelect->setObjectName("showHiddenSelect");
|
||||||
sizePolicy2.setHeightForWidth(showHiddenSelect->sizePolicy().hasHeightForWidth());
|
sizePolicy3.setHeightForWidth(showHiddenSelect->sizePolicy().hasHeightForWidth());
|
||||||
showHiddenSelect->setSizePolicy(sizePolicy2);
|
showHiddenSelect->setSizePolicy(sizePolicy3);
|
||||||
showHiddenSelect->setMinimumSize(QSize(488, 60));
|
showHiddenSelect->setMinimumSize(QSize(488, 60));
|
||||||
showHiddenSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
showHiddenSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
||||||
" border: 0px;\n"
|
" border: 0px;\n"
|
||||||
@ -213,8 +229,8 @@ public:
|
|||||||
|
|
||||||
groupSelect = new QComboBox(sensorsTab);
|
groupSelect = new QComboBox(sensorsTab);
|
||||||
groupSelect->setObjectName("groupSelect");
|
groupSelect->setObjectName("groupSelect");
|
||||||
sizePolicy2.setHeightForWidth(groupSelect->sizePolicy().hasHeightForWidth());
|
sizePolicy3.setHeightForWidth(groupSelect->sizePolicy().hasHeightForWidth());
|
||||||
groupSelect->setSizePolicy(sizePolicy2);
|
groupSelect->setSizePolicy(sizePolicy3);
|
||||||
groupSelect->setMinimumSize(QSize(275, 60));
|
groupSelect->setMinimumSize(QSize(275, 60));
|
||||||
groupSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
groupSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
||||||
" border: 0px;\n"
|
" border: 0px;\n"
|
||||||
@ -241,12 +257,12 @@ public:
|
|||||||
searchLayout = new QHBoxLayout();
|
searchLayout = new QHBoxLayout();
|
||||||
searchLayout->setSpacing(0);
|
searchLayout->setSpacing(0);
|
||||||
searchLayout->setObjectName("searchLayout");
|
searchLayout->setObjectName("searchLayout");
|
||||||
searchLayout->setSizeConstraint(QLayout::SetFixedSize);
|
searchLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize);
|
||||||
searchLayout->setContentsMargins(25, -1, -1, 10);
|
searchLayout->setContentsMargins(25, -1, -1, 10);
|
||||||
search = new QLineEdit(sensorsTab);
|
search = new QLineEdit(sensorsTab);
|
||||||
search->setObjectName("search");
|
search->setObjectName("search");
|
||||||
sizePolicy2.setHeightForWidth(search->sizePolicy().hasHeightForWidth());
|
sizePolicy3.setHeightForWidth(search->sizePolicy().hasHeightForWidth());
|
||||||
search->setSizePolicy(sizePolicy2);
|
search->setSizePolicy(sizePolicy3);
|
||||||
search->setMinimumSize(QSize(778, 60));
|
search->setMinimumSize(QSize(778, 60));
|
||||||
search->setStyleSheet(QString::fromUtf8("width: 778px;\n"
|
search->setStyleSheet(QString::fromUtf8("width: 778px;\n"
|
||||||
"height: 60px;\n"
|
"height: 60px;\n"
|
||||||
@ -281,8 +297,8 @@ public:
|
|||||||
tabWidget->addTab(sensorsTab, QString());
|
tabWidget->addTab(sensorsTab, QString());
|
||||||
incidentsTab = new QWidget();
|
incidentsTab = new QWidget();
|
||||||
incidentsTab->setObjectName("incidentsTab");
|
incidentsTab->setObjectName("incidentsTab");
|
||||||
sizePolicy1.setHeightForWidth(incidentsTab->sizePolicy().hasHeightForWidth());
|
sizePolicy2.setHeightForWidth(incidentsTab->sizePolicy().hasHeightForWidth());
|
||||||
incidentsTab->setSizePolicy(sizePolicy1);
|
incidentsTab->setSizePolicy(sizePolicy2);
|
||||||
incidentsTab->setStyleSheet(QString::fromUtf8("#incidentsTab {\n"
|
incidentsTab->setStyleSheet(QString::fromUtf8("#incidentsTab {\n"
|
||||||
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
||||||
" background-color: #ffffff; \n"
|
" background-color: #ffffff; \n"
|
||||||
@ -290,11 +306,156 @@ public:
|
|||||||
"}"));
|
"}"));
|
||||||
gridLayout_8 = new QGridLayout(incidentsTab);
|
gridLayout_8 = new QGridLayout(incidentsTab);
|
||||||
gridLayout_8->setObjectName("gridLayout_8");
|
gridLayout_8->setObjectName("gridLayout_8");
|
||||||
|
scrollArea = new QScrollArea(incidentsTab);
|
||||||
|
scrollArea->setObjectName("scrollArea");
|
||||||
|
scrollArea->setStyleSheet(QString::fromUtf8("background: transparent"));
|
||||||
|
scrollArea->setWidgetResizable(true);
|
||||||
|
scrollAreaWidgetContents = new QWidget();
|
||||||
|
scrollAreaWidgetContents->setObjectName("scrollAreaWidgetContents");
|
||||||
|
scrollAreaWidgetContents->setGeometry(QRect(0, 0, 1608, 770));
|
||||||
|
verticalLayout_2 = new QVBoxLayout(scrollAreaWidgetContents);
|
||||||
|
verticalLayout_2->setObjectName("verticalLayout_2");
|
||||||
|
horizontalLayout_3 = new QHBoxLayout();
|
||||||
|
horizontalLayout_3->setSpacing(15);
|
||||||
|
horizontalLayout_3->setObjectName("horizontalLayout_3");
|
||||||
|
horizontalLayout_3->setContentsMargins(25, -1, -1, -1);
|
||||||
|
label_2 = new QLabel(scrollAreaWidgetContents);
|
||||||
|
label_2->setObjectName("label_2");
|
||||||
|
label_2->setMinimumSize(QSize(488, 36));
|
||||||
|
label_2->setStyleSheet(QString::fromUtf8("width: 488px;\n"
|
||||||
|
"height: 36px;\n"
|
||||||
|
"background: transparent;\n"
|
||||||
|
"font-family: Inter;\n"
|
||||||
|
"font-size: 30px;\n"
|
||||||
|
"font-weight: 400;\n"
|
||||||
|
"line-height: 36.31px;\n"
|
||||||
|
"text-align: left;\n"
|
||||||
|
"color: #13385F;\n"
|
||||||
|
""));
|
||||||
|
|
||||||
|
horizontalLayout_3->addWidget(label_2);
|
||||||
|
|
||||||
|
label = new QLabel(scrollAreaWidgetContents);
|
||||||
|
label->setObjectName("label");
|
||||||
|
label->setMinimumSize(QSize(275, 36));
|
||||||
|
label->setStyleSheet(QString::fromUtf8("width: 275px;\n"
|
||||||
|
"height: 36px;\n"
|
||||||
|
"background: transparent;\n"
|
||||||
|
"font-family: Inter;\n"
|
||||||
|
"font-size: 30px;\n"
|
||||||
|
"font-weight: 400;\n"
|
||||||
|
"line-height: 36.31px;\n"
|
||||||
|
"text-align: left;\n"
|
||||||
|
"color: #13385F;\n"
|
||||||
|
""));
|
||||||
|
|
||||||
|
horizontalLayout_3->addWidget(label);
|
||||||
|
|
||||||
|
horizontalSpacer_7 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||||
|
|
||||||
|
horizontalLayout_3->addItem(horizontalSpacer_7);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_2->addLayout(horizontalLayout_3);
|
||||||
|
|
||||||
|
horizontalLayout_2 = new QHBoxLayout();
|
||||||
|
horizontalLayout_2->setSpacing(15);
|
||||||
|
horizontalLayout_2->setObjectName("horizontalLayout_2");
|
||||||
|
horizontalLayout_2->setContentsMargins(25, -1, -1, -1);
|
||||||
|
comboBox_2 = new QComboBox(scrollAreaWidgetContents);
|
||||||
|
comboBox_2->setObjectName("comboBox_2");
|
||||||
|
QSizePolicy sizePolicy4(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||||
|
sizePolicy4.setHorizontalStretch(0);
|
||||||
|
sizePolicy4.setVerticalStretch(0);
|
||||||
|
sizePolicy4.setHeightForWidth(comboBox_2->sizePolicy().hasHeightForWidth());
|
||||||
|
comboBox_2->setSizePolicy(sizePolicy4);
|
||||||
|
comboBox_2->setMinimumSize(QSize(488, 60));
|
||||||
|
comboBox_2->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
||||||
|
" border: 0px;\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QComboBox::down-arrow {\n"
|
||||||
|
" image: url(:/visual/res/svg/chevron-down.png);\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QComboBox {\n"
|
||||||
|
" border: 2px solid #DCD174;\n"
|
||||||
|
" background: transparent;\n"
|
||||||
|
"}"));
|
||||||
|
|
||||||
|
horizontalLayout_2->addWidget(comboBox_2);
|
||||||
|
|
||||||
|
comboBox = new QComboBox(scrollAreaWidgetContents);
|
||||||
|
comboBox->setObjectName("comboBox");
|
||||||
|
comboBox->setMinimumSize(QSize(275, 60));
|
||||||
|
comboBox->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
|
||||||
|
" border: 0px;\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QComboBox::down-arrow {\n"
|
||||||
|
" image: url(:/visual/res/svg/chevron-down.png);\n"
|
||||||
|
"}\n"
|
||||||
|
"\n"
|
||||||
|
"QComboBox {\n"
|
||||||
|
" border: 2px solid #DCD174;\n"
|
||||||
|
" background: transparent;\n"
|
||||||
|
"}"));
|
||||||
|
|
||||||
|
horizontalLayout_2->addWidget(comboBox);
|
||||||
|
|
||||||
|
horizontalSpacer_8 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||||
|
|
||||||
|
horizontalLayout_2->addItem(horizontalSpacer_8);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_2->addLayout(horizontalLayout_2);
|
||||||
|
|
||||||
|
horizontalLayout = new QHBoxLayout();
|
||||||
|
horizontalLayout->setObjectName("horizontalLayout");
|
||||||
|
horizontalLayout->setContentsMargins(25, -1, -1, -1);
|
||||||
|
lineEdit = new QLineEdit(scrollAreaWidgetContents);
|
||||||
|
lineEdit->setObjectName("lineEdit");
|
||||||
|
sizePolicy4.setHeightForWidth(lineEdit->sizePolicy().hasHeightForWidth());
|
||||||
|
lineEdit->setSizePolicy(sizePolicy4);
|
||||||
|
lineEdit->setMinimumSize(QSize(778, 60));
|
||||||
|
lineEdit->setStyleSheet(QString::fromUtf8("width: 778px;\n"
|
||||||
|
"height: 60px;\n"
|
||||||
|
"border: 2px solid #DCD174;\n"
|
||||||
|
"font-family: Inter;\n"
|
||||||
|
"font-size: 26px;\n"
|
||||||
|
"font-weight: 400;\n"
|
||||||
|
"line-height: 31.47px;\n"
|
||||||
|
"text-align: left;\n"
|
||||||
|
"background: #00000000;\n"
|
||||||
|
"color: #a6a6a6;\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
""));
|
||||||
|
|
||||||
|
horizontalLayout->addWidget(lineEdit);
|
||||||
|
|
||||||
|
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||||
|
|
||||||
|
horizontalLayout->addItem(horizontalSpacer);
|
||||||
|
|
||||||
|
|
||||||
|
verticalLayout_2->addLayout(horizontalLayout);
|
||||||
|
|
||||||
|
asd = new QHBoxLayout();
|
||||||
|
asd->setObjectName("asd");
|
||||||
|
|
||||||
|
verticalLayout_2->addLayout(asd);
|
||||||
|
|
||||||
|
scrollArea->setWidget(scrollAreaWidgetContents);
|
||||||
|
|
||||||
|
gridLayout_8->addWidget(scrollArea, 0, 0, 1, 1);
|
||||||
|
|
||||||
tabWidget->addTab(incidentsTab, QString());
|
tabWidget->addTab(incidentsTab, QString());
|
||||||
journalTab = new QWidget();
|
journalTab = new QWidget();
|
||||||
journalTab->setObjectName("journalTab");
|
journalTab->setObjectName("journalTab");
|
||||||
sizePolicy1.setHeightForWidth(journalTab->sizePolicy().hasHeightForWidth());
|
sizePolicy2.setHeightForWidth(journalTab->sizePolicy().hasHeightForWidth());
|
||||||
journalTab->setSizePolicy(sizePolicy1);
|
journalTab->setSizePolicy(sizePolicy2);
|
||||||
journalTab->setStyleSheet(QString::fromUtf8("#journalTab {\n"
|
journalTab->setStyleSheet(QString::fromUtf8("#journalTab {\n"
|
||||||
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
||||||
" background-color: #ffffff; \n"
|
" background-color: #ffffff; \n"
|
||||||
@ -305,8 +466,8 @@ public:
|
|||||||
tabWidget->addTab(journalTab, QString());
|
tabWidget->addTab(journalTab, QString());
|
||||||
statisticsTab = new QWidget();
|
statisticsTab = new QWidget();
|
||||||
statisticsTab->setObjectName("statisticsTab");
|
statisticsTab->setObjectName("statisticsTab");
|
||||||
sizePolicy1.setHeightForWidth(statisticsTab->sizePolicy().hasHeightForWidth());
|
sizePolicy2.setHeightForWidth(statisticsTab->sizePolicy().hasHeightForWidth());
|
||||||
statisticsTab->setSizePolicy(sizePolicy1);
|
statisticsTab->setSizePolicy(sizePolicy2);
|
||||||
statisticsTab->setStyleSheet(QString::fromUtf8("#statisticsTab {\n"
|
statisticsTab->setStyleSheet(QString::fromUtf8("#statisticsTab {\n"
|
||||||
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
||||||
" background-color: #ffffff; \n"
|
" background-color: #ffffff; \n"
|
||||||
@ -317,8 +478,8 @@ public:
|
|||||||
tabWidget->addTab(statisticsTab, QString());
|
tabWidget->addTab(statisticsTab, QString());
|
||||||
settingsTab = new QWidget();
|
settingsTab = new QWidget();
|
||||||
settingsTab->setObjectName("settingsTab");
|
settingsTab->setObjectName("settingsTab");
|
||||||
sizePolicy1.setHeightForWidth(settingsTab->sizePolicy().hasHeightForWidth());
|
sizePolicy2.setHeightForWidth(settingsTab->sizePolicy().hasHeightForWidth());
|
||||||
settingsTab->setSizePolicy(sizePolicy1);
|
settingsTab->setSizePolicy(sizePolicy2);
|
||||||
settingsTab->setStyleSheet(QString::fromUtf8("#settingsTab {\n"
|
settingsTab->setStyleSheet(QString::fromUtf8("#settingsTab {\n"
|
||||||
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
" image: url(:/visual/res/svg/fema-wing.svg);\n"
|
||||||
" background-color: #ffffff; \n"
|
" background-color: #ffffff; \n"
|
||||||
@ -350,6 +511,8 @@ public:
|
|||||||
showHidden->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214 \321\201\320\272\321\200\321\213\321\202\321\213\320\265", nullptr));
|
showHidden->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214 \321\201\320\272\321\200\321\213\321\202\321\213\320\265", nullptr));
|
||||||
search->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr));
|
search->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr));
|
||||||
tabWidget->setTabText(tabWidget->indexOf(sensorsTab), QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272\320\270", nullptr));
|
tabWidget->setTabText(tabWidget->indexOf(sensorsTab), QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272\320\270", nullptr));
|
||||||
|
label_2->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260:", nullptr));
|
||||||
|
label->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214 \321\201\320\272\321\200\321\213\321\202\321\213\320\265", nullptr));
|
||||||
tabWidget->setTabText(tabWidget->indexOf(incidentsTab), QCoreApplication::translate("MainWindow", "\320\230\320\275\321\206\320\270\320\264\320\265\320\275\321\202\321\213", nullptr));
|
tabWidget->setTabText(tabWidget->indexOf(incidentsTab), QCoreApplication::translate("MainWindow", "\320\230\320\275\321\206\320\270\320\264\320\265\320\275\321\202\321\213", nullptr));
|
||||||
tabWidget->setTabText(tabWidget->indexOf(journalTab), QCoreApplication::translate("MainWindow", "\320\226\321\203\321\200\320\275\320\260\320\273", nullptr));
|
tabWidget->setTabText(tabWidget->indexOf(journalTab), QCoreApplication::translate("MainWindow", "\320\226\321\203\321\200\320\275\320\260\320\273", nullptr));
|
||||||
tabWidget->setTabText(tabWidget->indexOf(statisticsTab), QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260", nullptr));
|
tabWidget->setTabText(tabWidget->indexOf(statisticsTab), QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260", nullptr));
|
||||||
|
108
flowlayout.cpp
Normal file
108
flowlayout.cpp
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
#include "flowlayout.h"
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing)
|
||||||
|
: QLayout(parent), m_hSpacing(hSpacing), m_vSpacing(vSpacing) {
|
||||||
|
setContentsMargins(margin, margin, margin, margin);
|
||||||
|
}
|
||||||
|
|
||||||
|
FlowLayout::~FlowLayout() {
|
||||||
|
QLayoutItem *item;
|
||||||
|
while ((item = takeAt(0))) {
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlowLayout::addItem(QLayoutItem *item) {
|
||||||
|
m_items.append(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::count() const {
|
||||||
|
return m_items.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
QLayoutItem *FlowLayout::itemAt(int index) const {
|
||||||
|
return m_items.value(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
QLayoutItem *FlowLayout::takeAt(int index) {
|
||||||
|
return (index >= 0 && index < m_items.size()) ? m_items.takeAt(index) : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Qt::Orientations FlowLayout::expandingDirections() const {
|
||||||
|
return Qt::Orientation(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FlowLayout::hasHeightForWidth() const {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::heightForWidth(int width) const {
|
||||||
|
return doLayout(QRect(0, 0, width, 0), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlowLayout::setGeometry(const QRect &rect) {
|
||||||
|
QLayout::setGeometry(rect);
|
||||||
|
doLayout(rect, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize FlowLayout::sizeHint() const {
|
||||||
|
return minimumSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize FlowLayout::minimumSize() const {
|
||||||
|
QSize size;
|
||||||
|
for (const QLayoutItem *item : qAsConst(m_items)) {
|
||||||
|
size = size.expandedTo(item->minimumSize());
|
||||||
|
}
|
||||||
|
const QMargins margins = contentsMargins();
|
||||||
|
size += QSize(margins.left() + margins.right(), margins.top() + margins.bottom());
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::doLayout(const QRect &rect, bool testOnly) const {
|
||||||
|
int x = rect.x();
|
||||||
|
int y = rect.y();
|
||||||
|
int lineHeight = 0;
|
||||||
|
|
||||||
|
for (QLayoutItem *item : qAsConst(m_items)) {
|
||||||
|
int spaceX = horizontalSpacing();
|
||||||
|
int spaceY = verticalSpacing();
|
||||||
|
int nextX = x + item->sizeHint().width() + spaceX;
|
||||||
|
|
||||||
|
if (nextX - spaceX > rect.right() && lineHeight > 0) {
|
||||||
|
x = rect.x();
|
||||||
|
y += lineHeight + spaceY;
|
||||||
|
nextX = x + item->sizeHint().width() + spaceX;
|
||||||
|
lineHeight = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!testOnly) {
|
||||||
|
item->setGeometry(QRect(QPoint(x, y), item->sizeHint()));
|
||||||
|
}
|
||||||
|
|
||||||
|
x = nextX;
|
||||||
|
lineHeight = qMax(lineHeight, item->sizeHint().height());
|
||||||
|
}
|
||||||
|
return y + lineHeight - rect.y();
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::horizontalSpacing() const {
|
||||||
|
return (m_hSpacing >= 0) ? m_hSpacing : smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::verticalSpacing() const {
|
||||||
|
return (m_vSpacing >= 0) ? m_vSpacing : smartSpacing(QStyle::PM_LayoutVerticalSpacing);
|
||||||
|
}
|
||||||
|
|
||||||
|
int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const {
|
||||||
|
QObject *parent = this->parent();
|
||||||
|
if (!parent) {
|
||||||
|
return -1;
|
||||||
|
} else if (parent->isWidgetType()) {
|
||||||
|
return static_cast<QWidget *>(parent)->style()->pixelMetric(pm, nullptr, static_cast<QWidget *>(parent));
|
||||||
|
} else {
|
||||||
|
return static_cast<QLayout *>(parent)->spacing();
|
||||||
|
}
|
||||||
|
}
|
38
flowlayout.h
Normal file
38
flowlayout.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#ifndef FLOWLAYOUT_H
|
||||||
|
#define FLOWLAYOUT_H
|
||||||
|
|
||||||
|
#include <QLayout>
|
||||||
|
#include <QStyle>
|
||||||
|
#include <QRect>
|
||||||
|
#include <QList>
|
||||||
|
|
||||||
|
class FlowLayout : public QLayout {
|
||||||
|
public:
|
||||||
|
explicit FlowLayout(QWidget *parent = nullptr, int margin = 0, int hSpacing = -1, int vSpacing = -1);
|
||||||
|
~FlowLayout() override;
|
||||||
|
|
||||||
|
void addItem(QLayoutItem *item) override;
|
||||||
|
int count() const override;
|
||||||
|
QLayoutItem *itemAt(int index) const override;
|
||||||
|
QLayoutItem *takeAt(int index) override;
|
||||||
|
|
||||||
|
Qt::Orientations expandingDirections() const override;
|
||||||
|
bool hasHeightForWidth() const override;
|
||||||
|
int heightForWidth(int width) const override;
|
||||||
|
|
||||||
|
void setGeometry(const QRect &rect) override;
|
||||||
|
QSize sizeHint() const override;
|
||||||
|
QSize minimumSize() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int doLayout(const QRect &rect, bool testOnly) const;
|
||||||
|
int horizontalSpacing() const;
|
||||||
|
int verticalSpacing() const;
|
||||||
|
int smartSpacing(QStyle::PixelMetric pm) const;
|
||||||
|
|
||||||
|
QList<QLayoutItem *> m_items;
|
||||||
|
int m_hSpacing;
|
||||||
|
int m_vSpacing;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FLOWLAYOUT_H
|
146
mainwindow.cpp
146
mainwindow.cpp
@ -1,7 +1,7 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "./ui_mainwindow.h"
|
#include "./ui_mainwindow.h"
|
||||||
#include "httpclient.h"
|
#include "httpclient.h"
|
||||||
#include "sensorlayout.h"
|
#include "flowlayout.h"
|
||||||
#include "sensorwidget.h"
|
#include "sensorwidget.h"
|
||||||
|
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
@ -11,126 +11,6 @@
|
|||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include <QLayout>
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QScrollArea>
|
|
||||||
#include <QStyle>
|
|
||||||
#include <QRect>
|
|
||||||
|
|
||||||
class FlowLayout : public QLayout {
|
|
||||||
public:
|
|
||||||
explicit FlowLayout(QWidget *parent = nullptr, int margin = 0, int hSpacing = -1, int vSpacing = -1)
|
|
||||||
: QLayout(parent), m_hSpacing(hSpacing), m_vSpacing(vSpacing) {
|
|
||||||
setContentsMargins(margin, margin, margin, margin);
|
|
||||||
}
|
|
||||||
|
|
||||||
~FlowLayout() override {
|
|
||||||
QLayoutItem *item;
|
|
||||||
while ((item = takeAt(0))) {
|
|
||||||
delete item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addItem(QLayoutItem *item) override {
|
|
||||||
m_items.append(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
int horizontalSpacing() const {
|
|
||||||
return (m_hSpacing >= 0) ? m_hSpacing : smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
|
|
||||||
}
|
|
||||||
|
|
||||||
int verticalSpacing() const {
|
|
||||||
return (m_vSpacing >= 0) ? m_vSpacing : smartSpacing(QStyle::PM_LayoutVerticalSpacing);
|
|
||||||
}
|
|
||||||
|
|
||||||
Qt::Orientations expandingDirections() const override {
|
|
||||||
return Qt::Orientation(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasHeightForWidth() const override {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int heightForWidth(int width) const override {
|
|
||||||
int height = doLayout(QRect(0, 0, width, 0), true);
|
|
||||||
return height;
|
|
||||||
}
|
|
||||||
|
|
||||||
int count() const override {
|
|
||||||
return m_items.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
QLayoutItem *itemAt(int index) const override {
|
|
||||||
return m_items.value(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
QLayoutItem *takeAt(int index) override {
|
|
||||||
return (index >= 0 && index < m_items.size()) ? m_items.takeAt(index) : nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setGeometry(const QRect &rect) override {
|
|
||||||
QLayout::setGeometry(rect);
|
|
||||||
doLayout(rect, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize sizeHint() const override {
|
|
||||||
return minimumSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize minimumSize() const override {
|
|
||||||
QSize size;
|
|
||||||
for (const QLayoutItem *item : qAsConst(m_items)) {
|
|
||||||
size = size.expandedTo(item->minimumSize());
|
|
||||||
}
|
|
||||||
const QMargins margins = contentsMargins();
|
|
||||||
size += QSize(margins.left() + margins.right(), margins.top() + margins.bottom());
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
int doLayout(const QRect &rect, bool testOnly) const {
|
|
||||||
int x = rect.x();
|
|
||||||
int y = rect.y();
|
|
||||||
int lineHeight = 0;
|
|
||||||
|
|
||||||
for (QLayoutItem *item : qAsConst(m_items)) {
|
|
||||||
QWidget *wid = item->widget();
|
|
||||||
int spaceX = horizontalSpacing();
|
|
||||||
int spaceY = verticalSpacing();
|
|
||||||
int nextX = x + item->sizeHint().width() + spaceX;
|
|
||||||
if (nextX - spaceX > rect.right() && lineHeight > 0) {
|
|
||||||
x = rect.x();
|
|
||||||
y += lineHeight + spaceY;
|
|
||||||
nextX = x + item->sizeHint().width() + spaceX;
|
|
||||||
lineHeight = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!testOnly) {
|
|
||||||
item->setGeometry(QRect(QPoint(x, y), item->sizeHint()));
|
|
||||||
}
|
|
||||||
|
|
||||||
x = nextX;
|
|
||||||
lineHeight = qMax(lineHeight, item->sizeHint().height());
|
|
||||||
}
|
|
||||||
return y + lineHeight - rect.y();
|
|
||||||
}
|
|
||||||
|
|
||||||
int smartSpacing(QStyle::PixelMetric pm) const {
|
|
||||||
QObject *parent = this->parent();
|
|
||||||
if (!parent) {
|
|
||||||
return -1;
|
|
||||||
} else if (parent->isWidgetType()) {
|
|
||||||
return static_cast<QWidget *>(parent)->style()->pixelMetric(pm, nullptr, static_cast<QWidget *>(parent));
|
|
||||||
} else {
|
|
||||||
return static_cast<QLayout *>(parent)->spacing();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<QLayoutItem *> m_items;
|
|
||||||
int m_hSpacing;
|
|
||||||
int m_vSpacing;
|
|
||||||
};
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
@ -139,42 +19,30 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
|
|
||||||
QScrollArea *scrollArea = new QScrollArea(this);
|
QScrollArea *scrollArea = new QScrollArea(this);
|
||||||
scrollArea->setStyleSheet("background: transparent; border: 0;");
|
scrollArea->setStyleSheet("background: transparent; border: 0;");
|
||||||
scrollArea->setWidgetResizable(true); // Контейнер будет растягиваться по области просмотра
|
scrollArea->setWidgetResizable(true);
|
||||||
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // Прокрутка по вертикали по мере необходимости
|
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||||
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Прокрутка по горизонтали по мере необходимости
|
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
|
||||||
// Создаем контейнер виджетов и устанавливаем кастомный FlowLayout
|
QWidget *widgetContainer = new QWidget(scrollArea);
|
||||||
QWidget *widgetContainer = new QWidget(scrollArea); // Контейнер для виджетов
|
FlowLayout *layout = new FlowLayout(widgetContainer, 10, 10, 10);
|
||||||
FlowLayout *layout = new FlowLayout(widgetContainer, 10, 10, 10); // Используем FlowLayout
|
|
||||||
|
|
||||||
// Добавляем виджеты в контейнер
|
|
||||||
int num = 0;
|
int num = 0;
|
||||||
for (int row = 0; row < 10; ++row) {
|
for (int row = 0; row < 10; ++row) {
|
||||||
for (int col = 0; col < 10; ++col) {
|
for (int col = 0; col < 1; ++col) {
|
||||||
const QString a = QString::number(row);
|
const QString a = QString::number(row);
|
||||||
const QString b = QString::number(col);
|
const QString b = QString::number(col);
|
||||||
const QString c = QString::number(num);
|
const QString c = QString::number(num);
|
||||||
num++;
|
num++;
|
||||||
// Создаем экземпляр SensorWidget
|
|
||||||
SensorWidget *sensor = new SensorWidget(nullptr, a, b, c);
|
SensorWidget *sensor = new SensorWidget(nullptr, a, b, c);
|
||||||
|
|
||||||
// Добавляем SensorWidget в FlowLayout
|
|
||||||
layout->addWidget(sensor);
|
layout->addWidget(sensor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Устанавливаем FlowLayout в качестве основного layout для контейнера
|
|
||||||
widgetContainer->setLayout(layout);
|
widgetContainer->setLayout(layout);
|
||||||
|
|
||||||
// Устанавливаем контейнер виджетов как виджет для QScrollArea
|
|
||||||
scrollArea->setWidget(widgetContainer);
|
scrollArea->setWidget(widgetContainer);
|
||||||
|
|
||||||
// Добавляем QScrollArea в основной layout (предполагаем, что это ui->SensorsTabLayout)
|
|
||||||
ui->SensorsTabLayout->addWidget(scrollArea);
|
ui->SensorsTabLayout->addWidget(scrollArea);
|
||||||
|
|
||||||
qDebug() << "ScrollArea Size:" << scrollArea->size();
|
|
||||||
//qDebug() << "Widget Count:" << sensorLayout->count();
|
|
||||||
|
|
||||||
/* HttpClient httpClient;
|
/* HttpClient httpClient;
|
||||||
for (int i = 0; i < 10; ++i) {
|
for (int i = 0; i < 10; ++i) {
|
||||||
QJsonObject getResult = httpClient.get("http://raspberrypi.lan:8080/data/getDevices");
|
QJsonObject getResult = httpClient.get("http://raspberrypi.lan:8080/data/getDevices");
|
||||||
|
@ -1,74 +0,0 @@
|
|||||||
#include "sensorlayout.h"
|
|
||||||
|
|
||||||
SensorLayout::SensorLayout(QWidget *parent)
|
|
||||||
: QLayout(parent)
|
|
||||||
{}
|
|
||||||
|
|
||||||
SensorLayout::~SensorLayout()
|
|
||||||
{
|
|
||||||
while (!items.isEmpty())
|
|
||||||
delete items.takeFirst();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SensorLayout::addItem(QLayoutItem *item)
|
|
||||||
{
|
|
||||||
items.append(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize SensorLayout::sizeHint() const
|
|
||||||
{
|
|
||||||
return QSize(400, 400); // Базовый размер
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize SensorLayout::minimumSize() const
|
|
||||||
{
|
|
||||||
return QSize(200, 200); // Минимальный размер
|
|
||||||
}
|
|
||||||
|
|
||||||
int SensorLayout::count() const
|
|
||||||
{
|
|
||||||
return items.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
QLayoutItem *SensorLayout::itemAt(int index) const
|
|
||||||
{
|
|
||||||
return items.value(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
QLayoutItem *SensorLayout::takeAt(int index)
|
|
||||||
{
|
|
||||||
if (index >= 0 && index < items.size())
|
|
||||||
return items.takeAt(index);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SensorLayout::setGeometry(const QRect &rect)
|
|
||||||
{
|
|
||||||
QLayout::setGeometry(rect);
|
|
||||||
|
|
||||||
int x = spacing; // Отступ слева
|
|
||||||
int y = spacing; // Отступ сверху
|
|
||||||
int maxWidth = rect.width(); // Максимальная ширина доступного пространства
|
|
||||||
int rowHeight = 0; // Высота текущей строки
|
|
||||||
|
|
||||||
for (QLayoutItem *item : qAsConst(items)) {
|
|
||||||
QSize itemSize = item->sizeHint();
|
|
||||||
|
|
||||||
// Проверяем, помещается ли элемент в текущую строку
|
|
||||||
if (x + itemSize.width() > maxWidth - spacing) {
|
|
||||||
// Переход на новую строку
|
|
||||||
x = spacing; // Сбрасываем горизонтальное положение
|
|
||||||
y += rowHeight + spacing; // Увеличиваем вертикальное положение
|
|
||||||
rowHeight = 0; // Сбрасываем высоту строки
|
|
||||||
}
|
|
||||||
|
|
||||||
// Устанавливаем элемент
|
|
||||||
item->setGeometry(QRect(QPoint(x, y), itemSize));
|
|
||||||
|
|
||||||
// Обновляем `x` для следующего элемента
|
|
||||||
x += itemSize.width() + spacing;
|
|
||||||
|
|
||||||
// Высота строки обновляется, если текущий элемент выше
|
|
||||||
rowHeight = qMax(rowHeight, itemSize.height());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
#ifndef SENSORLAYOUT_H
|
|
||||||
#define SENSORLAYOUT_H
|
|
||||||
|
|
||||||
#include <QLayout>
|
|
||||||
#include <QRect>
|
|
||||||
#include <QWidgetItem>
|
|
||||||
|
|
||||||
class SensorLayout : public QLayout
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SensorLayout(QWidget *parent = nullptr);
|
|
||||||
~SensorLayout();
|
|
||||||
|
|
||||||
void addItem(QLayoutItem *item) override;
|
|
||||||
QSize sizeHint() const override;
|
|
||||||
QSize minimumSize() const override;
|
|
||||||
int count() const override;
|
|
||||||
QLayoutItem *itemAt(int index) const override;
|
|
||||||
QLayoutItem *takeAt(int index) override;
|
|
||||||
void setGeometry(const QRect &rect) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
QList<QLayoutItem *> items;
|
|
||||||
int spacing = 20;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // SENSORLAYOUT_H
|
|
Loading…
Reference in New Issue
Block a user