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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование иконки без аретфактов  (Прочитано 2232 раз)
Medved
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« : Август 08, 2022, 14:47 »

рисую заполненный круг с определенным цветом. в результате получается круг на фоне квадрата.

Код:
    QIcon icon;
    QPixmap px(30, 30);
    QPainter painter(&px);
    
    px.fill(Qt::transparent);
    painter.drawEllipse(QRect(px.rect()));
    icon.addPixmap(px);

как избавиться от уголков квадрата, чтобы был видеть только нужный круг? см. картинку в аттаче

заодно прошу совета почему текст не отображается справа от иконки для QToolButton?

пс. для выравнивания текста с иконкой по левому краю использовал setStyleSheet("Text-align:left");
« Последнее редактирование: Август 09, 2022, 09:15 от Medved » Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #1 : Август 09, 2022, 00:00 »

Можно сделать часть иконки прозрачной. Цвет - transparent.
Записан

sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Август 09, 2022, 00:41 »

Нужно поменять местами 2 оператора:
Код
C++ (Qt)
 
   px.fill(Qt::transparent);
   QPainter painter(&px);
 
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Medved
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #3 : Август 09, 2022, 09:14 »

Нужно поменять местами 2 оператора:
Код
C++ (Qt)
 
   px.fill(Qt::transparent);
   QPainter painter(&px);
 

Спасибо! Помогло. Не могли бы вы вкратце объяснить почему именно такая последовательность?
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Август 09, 2022, 11:24 »

Спасибо! Помогло. Не могли бы вы вкратце объяснить почему именно такая последовательность?
Могу. Да фиг его знает)) Интуиция...
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Октябрь 13, 2022, 14:54 »

Из Справки:
Цитировать
QPixmap::QPixmap(int width, int height)
Constructs a pixmap with the given width and height. If either width or height is zero, a null pixmap is constructed.
Warning: This will create a QPixmap with uninitialized data. Call fill() to fill the pixmap with an appropriate color before drawing onto it with QPainter
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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