求助,关于Qt的窗口半透明,窗口上的空间不透明

JHJJHJ4A554E 2010-11-15 11:25:36
添加了如下的代码

QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);


可是,效果是窗口的背景全黑了。

想要达到的效果是,背景是玻璃模糊的那种效果,而窗口上的控件是清晰的,

应该怎么写,谢谢。
...全文
597 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JHJJHJ4A554E 2010-11-20
  • 打赏
  • 举报
回复
多谢ls各位,去查查看
dext 2010-11-16
  • 打赏
  • 举报
回复
你所说的毛玻璃效果只有windows平台有
给你几个Windows API 怎么用自己查

DwmIsCompositionEnabled
DwmExtendFrameIntoClientArea
DwmEnableBlurBehindWindow
DwmGetColorizationColor
yhf365 2010-11-16
  • 打赏
  • 举报
回复
透明效果在不同平台不一样,
我在Linux下看到的是很漂亮的透明效果,
在XP里面就变成全黑了,
于是只能这样写了:

#ifdef Q_WS_X11
setAttribute(Qt::WA_TranslucentBackground, true);
#endif
huangzp1985 2010-11-16
  • 打赏
  • 举报
回复
可以参考透明的方法,
在main函数里
dlg.setWindowFlags(Qt::FramelessWindowHint); //窗口设置无边框


在窗口的构造函数里
//set transparent
setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
QPalette bgpal = palette();
bgpal.setColor(QPalette::Background, QColor(255, 255, 0, 0));
bgpal.setColor(QPalette::Background, Qt::transparent);
setPalette(bgpal);

当然,你必须有一个如下的方法
void Dlg::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawPixmap(0, 0, QPixmap(":/images/Dlg_BK.png")); //这是一个窗口的背景图片
}

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧