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 に答える