デスクトップカルーセルアプリを作成しています。そこで、他のサブウィジェットも含む可能性のある画像ウィジェットを表示する必要があります。そのためにQFrame
、必要な画像を背景として使用しています。これが私が使用しようとしている画像です: image link。私が望むのは、画像のみが表示され、背景画像や何も表示されないため、ユーザーには画像だけのように見えることです. これが私のコードです:
setGeometry(QRect(100, 20, 325,400));
setFrameStyle(QFrame::StyledPanel);
setStyleSheet("QFrame#ImageFrame { background-color: transparent; background: url(:icon/ipad-skin); }");
setAutoFillBackground(false);
しかし、私は結果としてこれを得ています:
私もこれを試しました(hereから取得)(およびスタイルシートを削除します):
void MyWidget::paintEvent(QPaintEvent *p)
{
QPainter* pPainter = new QPainter(this);
pPainter->drawPixmap(rect(), QPixmap(":icon/newskin.png"));
delete pPainter;
QWidget::paintEvent(p);
}
何も変わらず、まったく同じ結果です。背景の灰色はまだ表示されます。
Goの灰色の背景を作成して画像のみを表示するにはどうすればよいですかQFrame
(設定している寸法は画像と同じです)。
PS 同様の質問がここで回答されていることを認識しています: QWidget transparent background (but not the children)、およびここ: Frameless and transparent window qt5しかし、これらは私の問題を解決しません。最後の解決策は、私の QFrame を次のようにします。
QFrame には、そもそも私が望んでいたものとはまったく異なるタイトル バーが付属しています。
編集- このソリューションは機能しますが、私のユースケースでは、QFrame 内の GL を介してレンダリングされた画像を表示する必要があります (具体的には、ここに表示されている iPad 画像内のビューポート)。Windows では、Qt::WA_TranslucentBackground
プロパティを設定すると、GL でレンダリングされたイメージが非表示になります。ただし、Macでは問題なく動作します。そのため、Windows でも機能するソリューションを探しています。