Что ж, если у вас так много виджетов, что они медленно загружаются на современном компьютере, вы, возможно, захотите использовать другую стратегию, когда вы загружаете фактические виджеты «лениво».Даже скрытые, они генерируют время, память для хранения и так далее.OTOH, что-то вроде фреймворка модель / представление, показывает относительно легкие надписи только для отображения, пока не будет запрошено редактирование, и только тогда рисует (относительно) сложный виджет редактора.И представления имеют условия для загрузки дополнительных данных по требованию (отложенная загрузка), и это то, что вы ищете.
Но в любом случае, чтобы ответить на ваш вопрос, вам в основном нужно будет отслеживать ширину "опорная "сетка" (может быть, ваша первая), и вручную установите столбцы сетки на любых дополнительных сетках.Что не так сложно, так как вы можете легко перебрать столбцы и вызвать QGridLayout::setColumnMinimumWidth()
.Другой вариант вместо «эталонной сетки» будет рассчитать ширину столбцов себя
QGridLayout gl1;
gl1.setSizeConstraint(QLayout::SetMinimumSize); // maybe
gl1.addWidget(..., 0, 0);
gl1.addWidget(..., 0, 1);
gl1.addWidget(..., 0, 2);
gl1.activate(); // or show it or something... it needs to calculate its sizeHint().
QVector<int> colWidths;
for (int i=0; i < gl1.columnCount(); ++i)
colWidths << gl1.columnMinimumWidth(i);
QGridLayout gl2;
gl2.addWidget(..., 0, 0);
gl2.addWidget(..., 0, 1);
gl2.addWidget(..., 0, 2);
for (int i : colWidths)
gl2.setColumnMinimumWidth(i);
Это упрощенно может быть, но, по сути вы»(хотя, конечно, это более активное участие, если вы хотите, чтобы адаптироваться к ширине содержимого).Вам понадобится подход "грубой силы", чтобы использовать отдельные макеты.Это очень поможет, если виджеты в макетах имеют фиксированную ширину, и если вы знаете их заранее, это станет еще проще.Также может быть полезно создать подкласс типа макета, свернуть свой собственный или собрать сетку из отдельных макетов H / V-блоков.
Но на самом деле, как только вы говорите «сотни виджетов», я просто думаю,«нет».BTDT.Я бы взглянул на структуру модель / представление и, возможно, подумал бы о реализации моего собственного QAbstractItemView
, если ситуация действительно настолько отчаянная.:)