QDialog
の背景を透明にして、私がウィンドウを透けるようにしたい。私は "丸いコーナーウィンドウ"錯覚を作成する半透明の背景イメージを使用したいので、私は尋ねています。 setOpacity
を使用することは、すべてのウィジェットを完全に不透明にしたいので、私の選択肢ではありません。透明な背景色のQDialog
ネイティブOS APIを使用せずにこれを達成する方法はありますか?
QDialog
の背景を透明にして、私がウィンドウを透けるようにしたい。私は "丸いコーナーウィンドウ"錯覚を作成する半透明の背景イメージを使用したいので、私は尋ねています。 setOpacity
を使用することは、すべてのウィジェットを完全に不透明にしたいので、私の選択肢ではありません。透明な背景色のQDialog
ネイティブOS APIを使用せずにこれを達成する方法はありますか?
QWidget::setAttribute(Qt::WA_TranslucentBackground);
を使用してください。これにはQt::FramelessWindowHint
も設定する必要があります。
この例は、私の作品:角丸について
#include <QtGui>
class Dialog : public QDialog
{
public:
Dialog() : QDialog(0, Qt::FramelessWindowHint) // hint is required on Windows
{
QPushButton *button = new QPushButton("Some Button", this);
setAttribute(Qt::WA_TranslucentBackground);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog d;
d.show();
return a.exec();
}
、QWidget::setMask()
がお手伝いします。
編集:コメント欄に以下の別の質問を受けて、ここではリソースファイル内の画像を使用して実施例であり、それはQWidget::paintEvent()
上書きします:完全と[QTウィジェットの
#include <QtGui>
class Dialog : public QDialog
{
public:
Dialog() : QDialog(0, Qt::FramelessWindowHint) // hint is required on Windows
{
setFixedSize(500, 500); // size of the background image
QPushButton *button = new QPushButton("Some Button", this);
setAttribute(Qt::WA_TranslucentBackground);
}
protected:
void paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawImage(QRectF(0, 0, 500, 500), QImage(":/resources/image.png"));
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog d;
d.show();
return a.exec();
}
可能重複透明な背景](http://stackoverflow.com/questions/4278723/a-qt-widget-withfully-transparent-background) –