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

我已经为QDial完成了自定义类,但是如何在其中包括样式表,以便像为按钮一样添加资源图像?例如:

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

最佳答案

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)的博客。

关于c++ - 如何在QDial上添加资源镜像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47561259/

10-11 04:51