Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Disabled QLabel pixmap


Автор: DiGGeRR 17.8.2011, 13:50
Такая проблема. Сорри, если вопрос глуп. Есть довольно сложный контрол, на котором располагается QLabel с картинкой. Контрол дисэйблится, и картинка, естественно, становится черно-белой. Есть ли возможность избежать этого?

Автор: _GRIN_ 26.8.2011, 11:21
DiGGeRR, На вскидку могу предложить следующий вариант - унаследуй свой класс от QLabel и прегрузи у и него paintEvent  - код на вскидку

Код

void MyLabel::paintEvent(QPaintEvent*ev)
{
    QLabel::paintEvent(ev); // обычная отрисовка
    if( ! isEnabled()) {
       // тут перерисовать пиксмап в нормально состоянии
    }
}


Это кончено топорное решение - правильное будет посмотреть реализацию QLabel::paintEvent и реализовать её в вышеуказнной функции с "правильной" отрисовкой пиксмапа - что бы два раза одно и тоже не рисовать.

Но вообще-то то что ты хочешь сделать - не стандартное поведение контрола (читай интуитивно непонятное) - а значит не правильное с точки зрения пользователя ;)

Автор: bsa 29.8.2011, 11:26
Цитата(_GRIN_ @  26.8.2011,  11:21 Найти цитируемый пост)
Но вообще-то то что ты хочешь сделать - не стандартное поведение контрола (читай интуитивно непонятное) - а значит не правильное с точки зрения пользователя ;)

Или, как вариант, неверное использование/размещение этого элемента. Ведь QLabel довольно пассивный элемент интерфейса. Зачем его вообще выключать? Скорее всего, он его разместил на виджете, который выключается. Надо вынести из него.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)