crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QWidget и QSS
Razerio
  опции профиля:
сообщение 30.1.2013, 10:54
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 16.1.2013
Пользователь №: 3677

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




Репутация:   0  


Есть класс, происходящий от QWidget. Когда пытаюсь задать ему фоновый цвет с помощью QSS ничего не получается.
SomeClass::SomeClass(QWidget *parent) :
    QWidget(parent)
{
  this->setStyleSheet("background-color: blue;");
}

Почему не работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Razerio
  опции профиля:
сообщение 30.1.2013, 13:49
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 16.1.2013
Пользователь №: 3677

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




Репутация:   0  


Вроде сам разобрался. Просто нужно было в классе переопределить событие paintEvent:
void SomeClass::paintEvent(QPaintEvent *)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.2.2013, 1:18
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Razerio @ 30.1.2013, 15:49) *
Просто нужно было в классе переопределить событие paintEvent:
Для использования QSS ничего переопределять не нужно.

Ты попытался задать цвет фона виджета, а фон-то сквозь виджет видно-ли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 1.2.2013, 8:10
Сообщение #4


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

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

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




Репутация:   8  


Цитата(Litkevich Yuriy @ 1.2.2013, 2:18) *
Для использования QSS ничего переопределять не нужно.


Не совсем соглашусь, в документации прямо сказано на этот счет (в таблице напротив QWidget):
Цитата
If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:
 void CustomWidget::paintEvent(QPaintEvent *)
{
     QStyleOption opt;
     opt.init(this);
     QPainter p(this);
     style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}


The above code is a no-operation if there is no stylesheet set.

http://doc.qt.digia.com/qt/stylesheet-reference.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.2.2013, 16:25
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


да, забыл про этот нюанс для самописанных виджетов. (обычно от QWidget наследоваться не приходится)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 16.2.2025, 23:20