qt写的程序作为一个模块嵌入到其他界面,怎么将qt的左上角的图标给去了?

搁浅的渔 2019-10-22 05:58:02
特别是qt模块里面的messagebox和一些弹窗,因为都是有标题框的,所以总是去不掉。
我也做了一些修改,例如:

messageBox.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);

这个单独运行qt模块是没问题的图标没了,但是因为嵌入的关系,要给这个界面一个爸爸(parent),所以就不行了,求教各位大佬有没有好的解决办法?能够统一修改的。
...全文
581 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
搁浅的渔 2019-10-24
  • 打赏
  • 举报
回复
至于为什么我的设置之前的messageBox.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);不管用,经过高人的指点,才发现messageBox.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint);这样设置就是可以得注意后面的关闭按钮没有了,但是你把关闭按钮放上去,那就会有图标.
这是官方的解释:WindowCloseButtonHint-》Adds a close button. On some platforms this implies Qt::WindowSystemMenuHint for it to work.(添加关闭按钮。在某些平台上,这意味着qt::windowsystemmenuhint可以工作。)
搁浅的渔 2019-10-24
  • 打赏
  • 举报
回复
已经解决了,两个办法:
1:直接设置Qt的messageBox.setWindowFlags(Qt::Tool);
2:用win32的接口:
HWND hwnd = (HWND)(messageBox.winId());
LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE);
style &= ~WS_SYSMENU; // unset the system menu flag
SetWindowLongPtr(hwnd, GWL_STYLE, style);
// force Windows to refresh some cached window styles
SetWindowPos(hwnd, 0, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
这个方法好像关闭按钮就没有了。
所以我用的是第一种方法。
搁浅的渔 2019-10-24
  • 打赏
  • 举报
回复
因为是前人的代码,所以要是改起来,除了messagebox之外,我都不知道他有多少个是窗口是弹出来的,并且有标题栏的。重写的话,将是大工程
搁浅的渔 2019-10-23
  • 打赏
  • 举报
回复
引用
setWindowFlags(box->windowFlags() | Qt::FramelessWindowHint)这样设置
我按这样设置,弹框之后后面的界面直接白屏了。什么鬼?
搁浅的渔 2019-10-23
  • 打赏
  • 举报
回复
引用
setWindowFlags(box->windowFlags() | Qt::FramelessWindowHint)这样设置
这个不是设置没有标题栏吗,但是现实需求是要标题栏左上角的标题,但是不要图标,如果去了的话,那就是都没了。
huo5896324 2019-10-23
  • 打赏
  • 举报
回复
setWindowFlags(box->windowFlags() | Qt::FramelessWindowHint)这样设置
搁浅的渔 2019-10-23
  • 打赏
  • 举报
回复
再顶一下下。
fashion1982 2019-10-23
  • 打赏
  • 举报
回复
建议自定义widget,控制起来方便有效。
搁浅的渔 2019-10-23
  • 打赏
  • 举报
回复
引用
一般用QT都是为了界面好看,messagebox都是自绘,去掉系统标题栏,后面自绘,自己加标题栏。
网上有现成的
你好,messagebox倒是可以这样干,但是模块中其他的弹框的界面是widget的,也是有着标题栏,这也是要重绘吗?
走好每一步 2019-10-23
  • 打赏
  • 举报
回复
引用 8 楼 搁浅的渔 的回复:
引用
去掉标题栏,然后自绘
,之前也是这样想的,但因为这是一个很大的模块,可能有很多的弹窗,如果重写会是最后的办法了。
一般用QT都是为了界面好看,messagebox都是自绘,去掉系统标题栏,后面自绘,自己加标题栏。 网上有现成的
搁浅的渔 2019-10-23
  • 打赏
  • 举报
回复
引用
去掉标题栏,然后自绘
,之前也是这样想的,但因为这是一个很大的模块,可能有很多的弹窗,如果重写会是最后的办法了。
走好每一步 2019-10-23
  • 打赏
  • 举报
回复 1
去掉标题栏,然后自绘
搁浅的渔 2019-10-22
  • 打赏
  • 举报
回复
来人啊,再顶一下
搁浅的渔 2019-10-22
  • 打赏
  • 举报
回复
先自己顶一下
Python开发基于边界跟踪算法的可逆水印可视化项目源码+项目说明+数据.zip 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为因为名字后再运行!有问题私信沟通,祝顺利! Python开发基于边界跟踪算法的可逆水印可视化项目源码+项目说明+数据.zip 边界追踪 传入通过`opencv`读取的原始图片,格式为`numpy`三维数组,分别为长、宽、RGB值,类型为`uint8`。 通过论文中的边界追踪(Borader following)算法计算出边界。其中包括转化为灰度图、用大津算法计算出阈值、向外用0填充一像素、找边界、裁剪填充的最外1像素。 传出以一个列表,其中每个元素为`numpy`三维数组,分别为长、宽、RGBA值,类型为`uint8`,A。其代表若干个已切分的块,以可嵌入信息从大到小排列(若相同则以边界最左一列的最上一点坐标作为特征,以其横坐标从大到小排序,若再相同则对比纵坐标)。排除内部点小于等于2的边界。 ### *关于如何判断内部点的多少 由于需要对内部没有可用点的分块进行筛除,则应判断分块内部点的多少。 考虑到若使用 “ 记录所有边界的坐标值然后判断某点的坐标值是否在其范围内来确定该点是否在边界内部 ” 的方法,会有增大存储量、占用较大空间、且难以判断的问题出现,我们提出了新的想法: 筛去除分块外的背景 → 将边界内部标记为3 → 再次扫描时通过标记是否为3判断内外部 其中,“筛去出分块外的背景” 一步中,我们参考并改进了OpenCV库中的floodfill()算法,以类似的方式标出了无用背景,并做了筛除。 同时,在“将边界内部标记为3” 一步中,优化了边界的标记方式,内部点数极少的分块不做标记,很大程度上减少了后续的工作量。 #### **边界优化: 判断某分块边界像素点的数量(通常来说,边界点数越多,代表着其内部的可用点数越多),设定一个常值,剔除点数低于常值的边界代表的分块,不对其做“边界内部标记成3”的操作。 该操作可以有效地减少后续的检测可嵌信息容量的工作量。 ### ### 关于分块的切分与传输 边界追踪算法将图片分割成几个部分(例如分为ABC三块),并以各部分左上角像素点的坐标作为标记,且已经根据论文中的相关算法完成了可嵌入信息容量的检测以及据此的筛选与排序。 完成边界优化之后,需要做容量检测与以及排序的图像数大大减少,也使得需要传输的图像数量减少。 传输的图像长、宽、像素大小等与原图相同,但 将除某分块外其余部分的不透明度改为0。 ## ## 水印嵌入 嵌入方得到相关分块与排序后利用论文中的相关算法将信息按照优先嵌入容量最大的分块的顺序,通过直方图位移将信息依次嵌入。 ## ## 水印提取 嵌入方将信息嵌入后的图片发送给接收方,同时发送嵌入块的标记信息及其峰值、最小点。 提取方再次对载体图像进行边界追踪,得到与嵌入信息前一致的边界信息与分块,通过接收到的标记信息判断出秘密信息嵌入在哪个块,并根据峰值与最小点进行信息还原。 ## 可视化 # 用到的库 `openCV`和`QT5` ```shell pip install opencv-python==4.4.0.44 pip install pyqt5==5.15.1 ```

16,816

社区成员

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

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