Чего я пытаюсь достичь?
Я хочу создать новое окно (отдельно от основного приложения), которое содержит QTreeWidget
. Основываясь на некоторых событиях моего основного приложения, я хочу заполнить это дерево несколькими записями. Для простоты давайте предположим, что я хочу, чтобы все эти записи находились на одном уровне (чтобы не было вложенных записей), эффективно превращая дерево в простой список.
Я хочу, чтобы это окно всегда было сверху (это своего рода индикатор состояния, который люди захотят видеть даже при выполнении других задач), и поэтому я не хочу, чтобы окно занимало больше места, чем абсолютно необходимо, но по-прежнему отображать все записи, которые в данный момент находятся в этом списке.
Это означает, что для пустого дерева должна быть видна только строка заголовка окна.
В чем проблема?
I не могу найти способ сделать окно едва достаточно большим, чтобы показать весь контент дерева (без полос прокрутки).
То, что я пробовал
Я пытался вызвать QWidget::adjustSize
на моем окне без какого-либо успеха. Затем я пошёл наповал и позвонил adjustSize
на QTreeWidget
раньше, но результат был тот же (окно просто отображается с некоторым размером по умолчанию, даже если дерево пусто).
Я также пробовал разные политики размера для QTreeWidget
, но, похоже, ни одна из них не дала того эффекта, на который я надеялся.
Затем я попытался не использовать макет в моем окне, который немного меняет поведение, но не достигает sh то, что я ищу тоже.
После этого я подумал, что просто сделаю калибровку сам. Однако для того, чтобы сделать это, мне нужен какой-то способ узнать, какого размера требует дерево в настоящий момент, чтобы показать содержимое, находящееся в нем. Однако после полудня поиска я просто не смог найти способ получить эту информацию. Я пытался использовать sizeHint
и minimumSizeHint
, но это просто постоянные значения, не зависящие от содержимого дерева. Я также искал способ получить требуемый размер отдельного человека QTreeWidgetItem
, но мне тоже не повезло.
Наконец-то я нашел в Интернете статью, утверждающую, что окно сокращается до минимального размера, один должен позвонить resize(0,0)
на это. Это действительно имеет эффект (в версии, где в окне есть макет), но теперь оно сжимает окно до некоторого крошечного квадрата, даже если в дереве есть некоторый контент, который обрезается этим (хорошо, что дерево делает покажите полосу прокрутки, но, как я уже сказал выше: я не хочу полосу прокрутки).
Вопрос
Кто-нибудь знает, как я могу изменить размер окна, чтобы он был едва достаточно большим для контент, который нужно разместить (обратите внимание, что я специально не хочу изменять размер контента до размера окна - в сети достаточно ответов на эту проблему)?
Или альтернативно: кто-то знает, как я могу получить виджет для расчета размера, который мне потребуется для его содержания для меня? В других средах этот тип функции называется, например, computeSize
, который вы можете предложить либо подсказкой по высоте, либо по ширине ...