Как добавить изображение ресурса на QDial?

Как добавить изображение ресурса на QDial?

Я уже создал пользовательский класс для QDial, но как я могу включить туда таблицу стилей, чтобы добавить изображение ресурса, как для кнопок? Например:

button1->setStyleSheet("border-image:url(:/resources/img/knob.png)");

0

Решение

QDial не поддерживает таблицы стилей, кроме цвета фона. Однако вот как я это делаю.

Предупреждение, однако: это не является полным, это просто дает вам представление о том, как это сделать.

В вашем заголовке установите свойство для QPixmap, которое будет вашим фоновым изображением:

class QCustomDial : public QDial
{
Q_OBJECT

Q_PROPERTY(QPixmap backgroundImage READ backgroundImage WRITE setBackgroundImage DESIGNABLE true)

QPixmap* m_background;

public:
QPixmap backgroundImage()    { return *m_background; }

void setBackgroundImage(QPixmap pixmap)
{
*m_background = pixmap;
update();
}

private:
QPixmap* m_background;
};

Затем в вашем paintEvent вам нужно будет нарисовать растровое изображение:

void QCustomDial::paintEvent(QPaintEvent*)
{
QPainter painter(this);
...
QPoint start(0, 0); //whatever you want
painter.drawPixmap(start, *m_background);
...
}

Наконец, часть, которую вы хотели в своем вопросе: таблица стилей. Теперь, когда вы определили Q_PROPERTYВы можете получить его из таблицы стилей:

QCustomDial {
qproperty-backgroundImage: url(:/resources/img/knob.png);
}

Я надеюсь, что это поможет вам. Я также предлагаю вам прочитать этот блог о пользовательских QDial (part1 а также часть 2).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]