Как заставить виджет QT обновлять измененные свойства из родительского виджета? - PullRequest
1 голос
/ 09 декабря 2010

У меня есть QWidget, который содержит несколько QLineEdits.Когда я говорю родительскому QWidget изменить свой фоновый цвет динамически , я бы хотел, чтобы дочерние элементы (т.е. QLineEdits) унаследовали эту модификацию.

Есть ли простой (читай: один вызов функции) чтобы сделать это?

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

РЕДАКТИРОВАТЬ жирным шрифтом.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

Если вы установите цвет фона с помощью таблицы стилей, назначенной этому виджету, и не будете указывать селекторы в CSS, все дочерние виджеты будут наследовать любые свойства, которые к ним относятся.

Мне показалось полезным использовать селектор, который позволял мне настраивать таргетинг на определенные виджеты для определенного стиля.

QWidget[objectName|="special_color"]
{
   color: rgb(255, 255, 255);
}

Если бы я использовал это в таблице стилей, назначенной виджету-контейнеру, он применил бы указанный цвет к любым дочерним виджетам, чье имя начиналось с "special_color", как "special_colorEditBox1", независимо от того, как они вложены или содержались .

0 голосов
/ 09 декабря 2010

Вообще говоря, вам не нужно беспокоиться о «накладных расходах» в диалогах.Если вы не выполняете какую-то массовую операцию рисования, приложения пользовательского интерфейса просто не нуждаются в большой оптимизации.Копать всех детей и менять их фон - это относительно быстрая операция по сравнению с самой системой Qt, которая фактически вносит изменения.

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

Как ты собираешься сказать ему "сменить цвет"?У Qt, похоже, нет операций для этого.Вы можете назначить фоновую роль или изменить палитру.Что касается последнего:

http://doc.qt.nokia.com/4.7/qwidget.html#palette-prop

...