Russian Qt Forum
Май 03, 2024, 23:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как поменять цвет фона в Qt4  (Прочитано 15590 раз)
moroz
Гость
« : Август 09, 2006, 11:37 »

Кто-нибудь сталкивался с проблемой смена цвета фона? В Qt3 была функция QWidget::setPaletteBackgroundColor(). Я не смог найти ее эквивалента в Qt4. В Qt4-examples тоже ничего путевого не нашол. Варриант типа setPalette(QColor(Qt::red)), мне тоже не особенно нравиться.   :?
Записан
bigirbis
Гость
« Ответ #1 : Август 09, 2006, 12:00 »

Зря ты так. Просто Тролли избавились от левых методов и систематизировали работу с цветами.
Всё теперь через роли.

enum QPalette::ColorRole
Записан
moroz
Гость
« Ответ #2 : Август 09, 2006, 13:22 »

Спасибо,
только я все равно не совсем понимаю: QWidget::setBackgroundRole(QPalette::ColorRole role)
в этом методе я могу задать роль для фона, а как мне задать цвет?
Записан
bigirbis
Гость
« Ответ #3 : Август 09, 2006, 13:36 »

Это немного другое.
Этот метод используется для установления цвета из цветовой палитры виджета.

Если нужен кастом:

QPalette palette;
palette.setColor( QColor( Qt::Red ), QPalette::Background );
widget->setPalette( palette );
Записан
moroz
Гость
« Ответ #4 : Август 09, 2006, 13:51 »

И что теперь никак одной строчкой нельзя?
Тоесть теперь получается для того чтобы поменять цвет фона нужно, провернуть серию операций, т.е.:
- создать объект палитры
- установить в нем цвет для фона
- установить его в виджете
да, и еще понадобиться наверно предварительно присвоить объекту палитры, палитру виджета, а то палитра по умолчанию может с ней не совпасть.
Помоему раньше было гораздо проще.
Неужели нет ничего более простого?
Записан
bigirbis
Гость
« Ответ #5 : Август 09, 2006, 14:06 »

Другого варианта что-то не встречал.
Правда я немного напортачил в примере:
Цитировать
QPalette palette;

QPalette palette = widget->palette();
- это в том случае, если палитра уже нестандартная.
Записан
moroz
Гость
« Ответ #6 : Август 09, 2006, 14:13 »

Спасибо, видимо другого варрианта и в правду нет  Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.