crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Задать фон одному виджету на форме
borune
  опции профиля:
сообщение 10.10.2014, 6:03
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Trisch @ 9.10.2014, 18:28) Link
Если задавать стиль по идентификатору, то стиль задается только виджетам с данным идентификатором, ну насколько я знаю :)

В общем попробуй, если не то, будем дальше думать.

так пробовал ж уже:
Цитата(borune @ 7.10.2014, 16:25) Link
Читаю еще, пробую задать свойства через имя объекта:
int main(int argc, char **argv)
{
QApplication app(argc, argv);
...
MainWindow mainWin;
mainWin.setObjectName("main");
app.setStyleSheet("QMainWindow#main { background: green}");
...
}


Цитата( @ 9.10.2014, 19:37) Link
Цитата
а если у меня дочерних 50 штук, для каждого такое городить?

Не для каждого, а только для тех, которые непосредственно вложены в MainWindow.

ну т.е. для тех, у кого parent равен моему мейнвиджету..у меня таких много, как вариант решения подойти должен, но, я думаю, никто не будет спорить, что решение не самое красивое, хочется чего-то более изящного

может можно как-то запретить виджетам наследовать палитру родителя?

Сообщение отредактировал borune - 10.10.2014, 6:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 10.10.2014, 13:23
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Цитата(borune @ 10.10.2014, 6:03) Link
так пробовал ж уже:
Цитата(borune @ 7.10.2014, 16:25) *
Читаю еще, пробую задать свойства через имя объекта:

int main(int argc, char **argv)
{
QApplication app(argc, argv);
...
MainWindow mainWin;
mainWin.setObjectName("main");
app.setStyleSheet("QMainWindow#main { background: green}");
...
}


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

задается ему цвет вот так:
QWidget#centralwidget {background: rgb(0, 255, 255);}


Еще раз повторюсь, QMainWindow это составной виджет, в стилях используется только для задания стиля перегородкам.
Для остальных случаев, используйте в настройках стилей название виджетов стили которых хотите изменить QWidget, QMenuBar, QToolBar и тд.

Сообщение отредактировал Trisch - 10.10.2014, 13:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 10.10.2014, 18:34
Сообщение #13


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
может можно как-то запретить виджетам наследовать палитру родителя?

Нет, если это не окно:
Цитата
QWidget propagates explicit palette roles from parent to child. If you assign a brush or color to a specific role on a palette and assign that palette to a widget, that role will propagate to all the widget's children, overriding any system defaults for that role. Note that palettes by default don't propagate to windows (see isWindow()) unless the Qt::WA_WindowPropagation attribute is enabled.


Цитата
ну т.е. для тех, у кого parent равен моему мейнвиджету..у меня таких много, как вариант решения подойти должен,

Можно просто перебрать всех детей, через QObject::children(), только надо проверять что они виджеты.

Цитата
но, я думаю, никто не будет спорить, что решение не самое красивое, хочется чего-то более изящного

Вам шашечки или ехать? :lol:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.1.2026, 13:49