Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Medved от Август 08, 2022, 14:47



Название: Рисование иконки без аретфактов
Отправлено: Medved от Август 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");


Название: Re: Рисование иконки без аретфактов
Отправлено: tux от Август 09, 2022, 00:00
Можно сделать часть иконки прозрачной. Цвет - transparent.


Название: Re: Рисование иконки без аретфактов
Отправлено: sergek от Август 09, 2022, 00:41
Нужно поменять местами 2 оператора:
Код
C++ (Qt)
 
   px.fill(Qt::transparent);
   QPainter painter(&px);
 


Название: Re: Рисование иконки без аретфактов
Отправлено: Medved от Август 09, 2022, 09:14
Нужно поменять местами 2 оператора:
Код
C++ (Qt)
 
   px.fill(Qt::transparent);
   QPainter painter(&px);
 

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


Название: Re: Рисование иконки без аретфактов
Отправлено: sergek от Август 09, 2022, 11:24
Спасибо! Помогло. Не могли бы вы вкратце объяснить почему именно такая последовательность?
Могу. Да фиг его знает)) Интуиция...


Название: Re: Рисование иконки без аретфактов
Отправлено: lit-uriy от Октябрь 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