如何在QDial上添加资源图像?

时间:2017-11-29 20:28:00

标签: c++ qt qdial

如何在QDial上添加资源图片?

我已经为QDial做了一个自定义类,但是如何在那里包含样式表,以便像我为按钮一样添加资源图像?例如:

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

1 个答案:

答案 0 :(得分:1)

QDial does not support stylesheets,背景颜色除外。但是,我就是这样做的。

然而,

警告:这根本不完整,它只是让你知道如何做。

在标题中,为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(part1part2)。