Как сделать виджет Qt невидимым без изменения положения других виджетов Qt?
У меня есть окно, полное QPushButtons и QLabels и различных других забавных QWidgets, все выложены динамически с использованием различныхQLayout
объекты ... и то, что я хотел бы сделать, - иногда сделать некоторые из этих виджетов невидимыми. То есть невидимые виджеты по-прежнему занимают свое обычное пространство в макете окна, но они не будут отображаться: вместо этого пользователь просто увидит цвет фона окна в прямоугольнике / области виджета.
hide()
и / илиsetVisible(false)
не справится с задачей, потому что они приводят к тому, что виджет полностью удаляется из макета, что позволяет другим виджетам расширяться, чтобы занять «вновь доступный» виджет; пространство; эффект, которого я хочу избежать.
Я полагаю, я мог бы сделать подкласс каждогоQWidget
введите, что переопределитьpaintEvent()
(а такжеmousePressEvent()
и т. д.) быть неоперативным (когда это уместно), но я бы предпочел решение, которое не требует от меня создания трех десятков различныхQWidget
подклассы.