2012-07-20 108 views
1

我需要在圖像頂部顯示一個按鈕。類似的東西,以Qt圖像頂部的顯示按鈕

的背景是一個的QPixmap/QImage的和按鈕是一個QPushbutton。我需要能夠動態更改圖像 - 所以我不確定樣式表是否適合該任務。我試過this,但無法讓它工作。

任何解決方案?

回答

3
  1. 子類QWidget並實現paintEent,您可以在後臺繪製圖像。通過樣式表設置和更改背景圖片也是可能的。
  2. 用按鈕添加布局到這個小部件。

有這樣的事情:

class WidgetWithButton 
    : public QWidget 
{ 
    Q_OBJECT 
    QImage m_bgImage; 
public: 
    WidgetWithButton(QWidget* aParent) 
    : QWidget(aParent) 
    { 
    QHBoxLayout* l = new QHBoxLayout(this); 
    QPushButton* myButton = new QPushButton(tr("Close")); 
    l->addWidget(myButton, 0, Qt::AlignCenter); 
    } 
    void setImage(const QImage& aImage) 
    { 
    m_image = aImage; 
    update(); 
    } 
protected: 
    virtual void paintEvent(QPaintEvent* aPainEvent) 
    { 
    if (m_image.isValid()) 
    { 
     QPainter painter(this); 
     painter.drawImage(rect(), m_image); 
    } 
    else 
     QWidget::paintEvent(aPainEvent); 
    } 
}; 
+0

就像一個魅力。謝謝! – go4sri 2012-07-21 10:24:23