Я хочу создать окно с изменяемым размером, которое содержит некоторые значки, которые изменяют размеры в соответствии с окном. Я создал окно и поместил значки в сетку, это работало так, как я хотел до сих пор.
Но проблема в том, что когда я уменьшаю окно до крошечного размера, значки слишком малы и не могут распознать совсем. Поэтому я установил минимальный размер значков, и это, похоже, решило первую проблему.
Теперь проблема в том, что значки перекрываются, когда я уменьшаю окно, и это выглядит некрасиво.
I попытался использовать spacer, поле виджета, интервал макета и свойство MinimRowHeight.
Но Qt кажется, что размер окна имеет более высокий приоритет, чем минимальный размер виджета или поле или другое.
Они все уменьшаются и по-прежнему отсутствуют. пространство между виджетами.
Я могу решить эту проблему с минимальным размером окна. Тем не менее, потребуется несколько попыток для определения наилучшего минимального размера.
Так что мой вопрос:
Интересно, есть ли разница (или интервал) между виджеты в макете, которые никогда не сжимаются. Если это так, я просто помещаю свои значки в большой размер окна и устанавливаю поле, которое не уменьшается, поэтому минимальный размер окна можно определить самостоятельно.
Если нет Какой лучший способ сделать то, что я хочу? это минимальный размер окна? Если тогда, как мне определить наилучший минимальный размер?
Любые советы или документы будут высоко оценены.
Добавить:
- Это то, что я хочу. Я установил минимальную высоту окна на 380 пикселей.

Если я не установил минимальную высоту, значки перекрываются, как указано выше

Я несколько раз менял высоту, чтобы определить высоту изображения в 1, если высоты недостаточно, значки слишком близки, как показано

Вот некоторый код:
verticalLayout = new QVBoxLayout(widget); // window layout
labelTime = new QLabel(widget);
verticalLayout->addWidget(labelTime);
gridLayout1 = new QGridLayout(); // grid layout at top
gridLayout1->setSpacing(15);
labelIcon1 = new QLabel(widget);
labelIcon1 ->setMinimumSize(QSize(40, 40));
labelIcon1 ->setPixmap(QPixmap(path));
gridLayout1->addWidget(labelIcon1, 0, 0, 1, 1);
... // create icons and add to gridlayout1
verticalLayout->addLayout(gridLayout1);
line = new QFrame(widget); // just line.
verticalLayout->addWidget(line); // add to vertical layout, not grid layout.
... // create grid layout, icons at bottom and add it to vertical layout, same as top
Структура выглядит следующим образом: QLabel, QGridLayout, Line, QGridLayout2 размещены в вертикальной компоновке.
-------------vertical layout
[ text ]
-------------grid layout
[icon][text]
[icon][text]
-------------grid layout
[ line ]
-------------grid layout 2
[icon][text]
[icon][text]
[icon][text]
-------------grid layout 2
-------------vertical layout