2015-08-20 2 views
0

Я знаю, что для QObject есть способ найти все QObjects, которые считаются дочерними, но я не знаю, означает ли это, что я смогу найти все виджеты в MainWindow. Кроме того, я не хочу находить какие-либо не-виджеты.Как перебирать все виджеты в окне?

Я спрашиваю, потому что я пытаюсь создать окно полупрозрачным, и цвет фона, очевидно, не применяется ко всем виджетам. Тем не менее, я применяю его к каждому виджету, о котором я могу думать. Я не хочу менять глобальную непрозрачность - текст должен оставаться непрозрачным.

На рисунке ниже показан код для настройки прозрачности, а также изображение самого окна. Как вы можете видеть, область редактирования текста окрашена. Но я тоже это настраиваю (это «Эд»), поэтому я не знаю, почему это так!

Pic of the code and the window.

ответ

1

Вы можете использовать QObject::findChildren<QWidget*>(), чтобы найти все дети виджетов.

+0

Вы правильно ответили на мой вопрос. К сожалению, я до сих пор не могу получить результат, за который я стреляю. Я повторяю findChildren из MainWindow, а затем из каждого дочернего объекта, который я нахожу. Я даю им всю палитру с базовым и передним планом, установленным на прозрачный. И все же QTextEdit на первой вкладке имеет непрозрачный фон. – SaburoutaMishima

+1

@SaburoutaMishima Я опаздываю на вечеринку, но вы действительно должны использовать QSS (Qt-версию CSS). Это позволяет вам создавать массовые стили для приложения, включая сложные вещи, такие как кнопки, полосы прокрутки или комбинированные поля. –

+0

@Zato Я ценю ответ. Я смог это решить. Я также не считаю CSS каким-либо образом заменой возможности программного доступа к под-объектам. К счастью, мне это не нужно. – SaburoutaMishima

Смежные вопросы