Qt显示图像顶部的按钮

时间:2012-07-20 05:26:37

标签: c++ qt

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

的东西

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

任何解决方案?

1 个答案:

答案 0 :(得分:3)

  1. 子类QWidget并实现paintEent,您可以在后台绘制图像。也可以通过样式表设置和更改背景图像。
  2. 使用按钮向此窗口小部件添加布局。
  3. 有类似的东西:

    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);
      }
    };