Итак, у меня есть QVBoxLayout с двумя дочерними макетами. Внутри первого есть ярлыки, а второй состоит из glwidget. Цель состоит в том, чтобы сделать первый макет точного размера, необходимого для отображения меток, не больше и не меньше (виджеты выравниваются по верхнему краю). (Так что на самом деле он занимает небольшую часть экрана). И мне нужно, чтобы он не зависел от размера окна. Я пробовал кое-что, и в настоящее время я просто использую addStrech, чтобы сделать его хотя бы сносным. Так что мне было интересно. Могу ли я достичь того, чего хочу, с помощью управления макетами?
QVBoxLayout *v_layout = new QVBoxLayout (this);
QHBoxLayout *labels_layout = new QHBoxLayout (this);
QVBoxLayout *labels_layout1 = new QVBoxLayout (this);
QVBoxLayout *labels_layout2 = new QVBoxLayout (this);
QVBoxLayout *drawer_layout = new QVBoxLayout (this);
number_of_points_label = new QLabel (this);
set_n_label ();
function_name_label = new QLabel (this);
set_func_label ();
state_label = new QLabel (this);
set_state_label ();
fabs_max_label = new QLabel (this);
change_fabs_max_label ();
drawer_layout->addWidget (drawer);
labels_layout->setAlignment (Qt::AlignTop);
labels_layout1->addWidget (number_of_points_label);
labels_layout1->addWidget (function_name_label);
labels_layout1->addWidget (fabs_max_label);
labels_layout2->addWidget (state_label);
labels_layout->addLayout (labels_layout1);
labels_layout->addLayout (labels_layout2);
v_layout->addLayout (labels_layout);
v_layout->addLayout (drawer_layout);
v_layout->setStretchFactor (labels_layout, 1);
v_layout->setStretchFactor (drawer_layout, 8);
v_layout->setStretchFactor(labels_layout, 0);
иv_layout->setStretchFactor(drawer_layout, 1);
(или просто используйте для этого второй параметрaddLayout()
). Это говорит макету предоставить все оставшееся пространство дляdrawer_layout
, в то время какlabel_layout
должен потреблять ровно столько, сколько необходимо. - person Scheff's Cat   schedule 05.09.2020