gpt4 book ai didi

qt - 具有透明背景色的 QDialog

转载 作者:行者123 更新时间:2023-12-04 12:51:59 68 4
gpt4 key购买 nike

我想做一个QDialog的背景透明的,所以我可以透过 window 看到。我问是因为我想使用半透明背景图像来创建“圆角窗口”错觉。使用 setOpacity对我来说不是一个选择,因为我希望所有小部件保持完全不透明。

有没有办法在不求助于 native 操作系统 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() 的工作示例。 :
#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();
}

关于qt - 具有透明背景色的 QDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450902/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com