мне нужно QTabWidget
только с иконками:
Как я могу скрыть текст метки вкладки в Qt? Я не могу установить текст в пустую строку (""
), так как я использую прикрепленные виджеты ( QDockWidget
) и текст метки устанавливается автоматически (и он мне нужен, если виджет плавающий).
Но в режиме вкладок я просто хочу отображать значки (вкладок).
Возможные подходы:
Что-нибудь проще / чище?
— Редактировать —
Хорошо, подход «установить заголовок окна на пустую строку и сбросить исходный текст» работает. Я использую topLevelChanged
сигнал для этого. Однако у него есть некоторые недостатки, так как пустой текст все еще занимает некоторое место. Еще одна проблема, с текстом подсказка исчезла, и я не могу отменить его.
В настоящее время я пытаюсь найти что-то среднее между «пустым текстом» и подходом Прасада Сильвы. Я пытаюсь определить текстовую метку внутри вкладки и установить ее размер на 0, а затем сбросить ее. Это немного отличается, но сохранит текст без изменений.
Кстати, я вижу строку поверх моих вкладок, есть идеи, что это такое (откуда это)?
Редактировать: кажется, что для этого не существует «простого способа» (таблица стилей, атрибут), см. Скрытие нижней строки в QTabBar
Может быть, я сам создам всю панель вкладок, так как автоматически сгенерированные вещи слишком сложны для обработки (согласен с PS).
Если вы не хотите видеть текст, вы можете установить его на пустой текст после сохранения текущего текста, а когда вы захотите увидеть его снова, восстановить его из сохраненной переменной.
Я не думаю, что в API есть что-то для этого не очень распространенного случая, что означает, что вам нужно будет сделать это самостоятельно.
Теперь вы можете утверждать, что это утомительно для многих виджетов, но, с другой стороны, вы можете написать простую функцию определения хеша или встроенную функцию, чтобы выполнить эту повторяющуюся работу за вас, что в результате вызовет только однострочный вызов. , который вы должны будете использовать в любом случае при изменении состояния.
Это не может быть сделано легко. Используйте пустой текст.
Я решил что-то вроде создания подкласса QDockWidget, который установил подкласс QWidget в качестве заголовка (через setTitleBarWidget). Это дало мне возможность управлять отображением / скрытием текста в строке заголовка, когда виджет-док запускает topLevelChanged, dockLocationChanged и visiblityChanged.
Это действительно большой хак, чтобы обойти тот факт, что Qt отказался предоставить публичный API для системы стыковки. С тех пор мы перешли к индивидуальной реализации стыковки из-за этих ограничений.