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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выделение иконки в QListWidget  (Прочитано 8897 раз)
Natalie
Гость
« : Февраль 21, 2006, 13:48 »

При выделении item-а в QListWidget backdround иконки остается белым.
Получается как-то некрасиво когда надпись подсвечивается синим, а иконка нет. Такое  ощущение, что иконка вообще отдельно от item-а.

Как сделать, чтобы background иконки при выделении item-а также становился бы cиним?
Может есть какое-то стандартное средство?

Help, pleeeease!!!!
Записан
nEoN
Гость
« Ответ #1 : Февраль 21, 2006, 14:12 »

Чтобы фон иконки менялся нужно сделать его прозрачным, а не белым.
Я бы порекомендовал использовать картинки в формате PNG, они поддерживают прозрачность.
Записан
Natalie
Гость
« Ответ #2 : Февраль 21, 2006, 14:53 »

Так фон должен быть прозрачным у самой иконки или прозрачность задавать программно? Если программно, то как?
Записан
nEoN
Гость
« Ответ #3 : Февраль 21, 2006, 15:06 »

Лучше всего изначально делать иконки с прозрачным фоном.
Можно и програмно делать прозрачность через наложение маски, но в данном случае по моему лучше использовать первый вариант.
Записан
burunduk
Гость
« Ответ #4 : Февраль 21, 2006, 15:50 »

QPixmap pixmap("image.png");
pixmap.setMask(pixmap.createHeuristicMask());


Цитата: "Natalie"
Так фон должен быть прозрачным у самой иконки или прозрачность задавать программно? Если программно, то как?
Записан
Natalie
Гость
« Ответ #5 : Февраль 21, 2006, 18:06 »

Иконки у меня с прозрачным фоном.

Попробовала написать:
pixmap.setMask(pixmap.createHeuristicMask());
(a также CreateMaskFromColor...)

Но все это не помогает. Грустный
Записан
burunduk
Гость
« Ответ #6 : Февраль 21, 2006, 18:13 »

а версия Qt ?

я вставлял иконки в QTableView, то всё красиво выделяется. Естественно прозрачный фон ставил. Можно попробывать на крайний случай заменить например QTableWidget'om.
Записан
Natalie
Гость
« Ответ #7 : Февраль 21, 2006, 19:05 »

Переделала на QTableWidget и теперь все нормально подсвечивается. Спасибо.

Только вот надпись (т.е. весь item кроме иконки) выделяется пунктиром (прямоугольником таким). Его как-нибудь убрать можно?
Записан
burunduk
Гость
« Ответ #8 : Февраль 22, 2006, 11:54 »

Кто найдет как убрать этот пунктирный прямоугольник выложите пожалуйста здесь код. Я искал и не нашёл Грустный
Записан
nEoN
Гость
« Ответ #9 : Февраль 22, 2006, 12:51 »

Цитата: "burunduk"
Кто найдет как убрать этот пунктирный прямоугольник выложите пожалуйста здесь код. Я искал и не нашёл Грустный

Вот один вариант - переопределяем метод drawFocus у делегата, и делаем его пустым.
Более простого пути я не нашёл.
Код:
class MyItemDelegate: public QItemDelegate
{
public:
MyItemDelegate(QObject * parent = 0) : QItemDelegate(parent) {}

protected:
void drawFocus(QPainter*, const QStyleOptionViewItem&, const QRect&) const {}
};

// при создании представления
table = new QTableWidget(rows, cols, this);
table->setItemDelegate(new MyItemDelegate(this));
Записан
burunduk
Гость
« Ответ #10 : Февраль 22, 2006, 13:59 »

класс, работает !  мне это тоже как я понял нужно было Улыбающийся
Записан
Natalie
Гость
« Ответ #11 : Февраль 22, 2006, 14:02 »

Все получилось! Большое всем спасибо за помощь!  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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