QDial does not support stylesheets, außer der Hintergrundfarbe. Aber hier ist, wie ich es mache.
Eine Warnung, aber: das ist nicht vollständig, es gibt Ihnen nur eine Idee, wie es geht.
In der Kopfzeile, stellen Sie eine Eigenschaft für einen QPixmap, die Ihr Hintergrundbild sein:
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;
};
Dann in Ihrem paintEventO, werden Sie die pixmap ziehen müssen:
void QCustomDial::paintEvent(QPaintEvent*)
{
QPainter painter(this);
...
QPoint start(0, 0); //whatever you want
painter.drawPixmap(start, *m_background);
...
}
Schließlich der Teil, den Sie in Ihrer Frage wollten: das Stylesheet. Nun, da Sie eine Q_PROPERTY
definiert haben, können Sie es aus dem Sheet erhalten:
QCustomDial {
qproperty-backgroundImage: url(:/resources/img/knob.png);
}
ich, dass es hoffen, wird Ihnen helfen. Ich empfehle Ihnen auch, diesen Blog über eine benutzerdefinierte QDial (part1 und part2) zu lesen.