1

我需要在图像顶部显示一个按钮。类似的东西

背景是 QPixmap/QImage,按钮是 QPushbutton。我需要能够动态更改图像 - 所以我不确定样式表是否适合该任务。我试过这个,但无法让它工作。

有什么解决办法吗?

4

1 回答 1

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);
  }
};
于 2012-07-20T07:57:23.357 回答