Russian Qt Forum

Qt => Model-View (MV) => Тема начата: kambala от Август 29, 2012, 22:04



Название: подстроить ширину виджета под содержимое дерева
Отправлено: kambala от Август 29, 2012, 22:04
Здравствуйте. Как сделать так, чтобы основной виджет автоматически расширялся в соответствии с содержимым QTreeWidget? Вариант «вычислить максимальную ширину руками и задать её» понятен и предлагать его не нужно :)

Выглядит виджет так (конструктор):
Код
C++ (Qt)
   QVBoxLayout *layout = new QVBoxLayout(this);
   layout->addWidget(_label);
   layout->addWidget(_itemsTreeWidget);
   layout->addWidget(_buttonBox);
 
   QList<QTreeWidgetItem *> treeItems = treeItemsForItems(_items);
   _itemsTreeWidget->addTopLevelItems(treeItems);
   foreach (QTreeWidgetItem *treeItem, treeItems)
   {
       treeItem->setText(0, "    " + treeItem->text(0)); // FIXME: dirty hack to place checkboxes near text
 
       QCheckBox *checkBox = new QCheckBox(_itemsTreeWidget);
       _itemsTreeWidget->setItemWidget(treeItem, 0, checkBox);
   }
   _itemsTreeWidget->setRootIsDecorated(false);
   _itemsTreeWidget->resizeColumnToContents(0);
   _itemsTreeWidget->resizeColumnToContents(1);
Результат при появлении такой (скрин 1), а хочется такой (скрин 2).


Название: Re: подстроить ширину виджета под содержимое дерева
Отправлено: Swa от Август 30, 2012, 08:32
Насколько я понимаю, больше способов нет, так как QTreeView наследуется от QAbstractScrollArea, а QAbstractScrollArea может изменить свой размер только по просьбе лэйаута, но не вложенного виджета.