qt界面黑的咋办_关于 Qt设置置顶窗口,透明部分显示黑色底色(已设置透明窗口) 的解决方法...
发布日期:2021-06-24 15:42:59 浏览次数:2 分类:技术文章

本文共 1627 字,大约阅读时间需要 5 分钟。

需求

桌面白板工具,需要悬浮工具

悬浮菜单效果

3509bda98cd58505d87453c6a8b69c94.gif

设置置顶系统函数

包含"windows.h"头文件

// 置顶

::SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

// 不置顶

::SetWindowPos(HWND(this->winId()), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

问题

直接使用windows设置桌面置顶,透明窗口部分显示黑色,且拖动按钮绘制存在问题,如下图:

db7cb83bd47a56bef52273cb2b96ff67.png

a575bba7b58bf8b4d8b73c7d74d7daee.png

原代码

在构造函数中置顶

DesktopDrawWidget::DesktopDrawWidget(QWidget *parent) :

QWidget(parent),

ui(new Ui::DesktopDrawWidget),

_transparent(true)

{

ui->setupUi(this);

::SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

setWindowFlag(Qt::FramelessWindowHint);

this->setAttribute(Qt::WA_TranslucentBackground, true);

connect(ui->pushButton_max, SIGNAL(signal_posChanged()), this, SLOT(slot_posChanged()));

slot_posChanged();

// QTimer::singleShot(3000, this, SLOT(slot_topMost()));

}

修改代码逻辑

主要是先显示,然后再置顶

DesktopDrawWidget::DesktopDrawWidget(QWidget *parent) :

QWidget(parent),

ui(new Ui::DesktopDrawWidget),

_transparent(true)

{

ui->setupUi(this);

// ::SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

setWindowFlag(Qt::FramelessWindowHint);

this->setAttribute(Qt::WA_TranslucentBackground, true);

connect(ui->pushButton_max, SIGNAL(signal_posChanged()), this, SLOT(slot_posChanged()));

slot_posChanged();

QTimer::singleShot(0, this, SLOT(slot_topMost()));

}

void DesktopDrawWidget::slot_topMost()

{

::SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

}

修改效果截图

97031b2c850f33578676edadda3a7353.png

6ab00c85999aef822b8f5c9a3211c093.png

本文同步分享在 博客“红胖子(AAA红模仿)”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

转载地址:https://blog.csdn.net/weixin_33613462/article/details/114468025 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:tpl怎么搞_emlog后台模板设置功能插件tpl_options
下一篇:java输入格式_JAVA自学笔记: 利用循环设计当用户输入格式错误的时候重新输入...

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月31日 21时07分05秒