2017-11-29 4 views
0

Wie füge ich ein Ressourcenbild zu QDial hinzu?Hinzufügen eines Ressourcenabbilds zu Qdial

Ich habe bereits eine benutzerdefinierte Klasse für QDial gemacht, aber wie kann ich ein Stylesheet dort einfügen, um ein Ressourcenbild wie ich für Buttons hinzufügen? Zum Beispiel:

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

Antwort

1

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.

Verwandte Themen