Qt编写的程序运行过程中界面突然不显示

软件和网站开发以及相关技术探讨
回复
Fuxaio0510
帖子: 6
注册时间: 2021-03-05 16:42

Qt编写的程序运行过程中界面突然不显示

#1

帖子 Fuxaio0510 » 2021-03-05 16:54

如题,系统Ubuntu18.04 aarch64,程序使用Qt5.9.5编写,已经稳定运行比较长的时间了,前几天突然在运行过程中界面消失了,在启动栏上的图标也消失,但是进程还在,查看日志工作线程继续在工作。
调试发现调用主界面hide方法造成的现象和遇到的现象一样。
另外有没有可能ubuntu系统,或者系统中其他程序隐藏了我写的程序的界面?
我觉得基本可以排除内存、指针、数组非法访问,因为进程并未退出,且工作线程仍然在运行。
该问题属于偶发,目前无法复现。请教有什么定位思路,谢谢。
头像
flwwater
帖子: 762
注册时间: 2010-10-31 9:15
系统: kubuntu 24.04

Re: Qt编写的程序运行过程中界面突然不显示

#2

帖子 flwwater » 2021-03-06 9:57

Qt + python ?
Qt + c++ ?
个人收藏的数百个精美动态壁纸:
https://url17.ctfile.com/d/15983117-593 ... 768?p=6220
(访问密码:6220


个人收藏的经典国语音乐和纯音乐(钢琴,笛子,二胡等):
https://url17.ctfile.com/d/15983117-446 ... 33e?p=6220
(访问密码:6220



如果访问密码不对,可试试这个密码 566816
Fuxaio0510
帖子: 6
注册时间: 2021-03-05 16:42

Re: Qt编写的程序运行过程中界面突然不显示

#3

帖子 Fuxaio0510 » 2021-03-06 15:07

flwwater 写了: 2021-03-06 9:57 Qt + python ?
Qt + c++ ?
Qt,C++
头像
astolia
论坛版主
帖子: 6454
注册时间: 2008-09-18 13:11

Re: Qt编写的程序运行过程中界面突然不显示

#4

帖子 astolia » 2021-03-07 12:23

如果你图形环境是默认的X11,那确实可能是某些外部来源让你的窗口隐藏了。
你可以用

代码: 全选

xdotool search --pid 进程ID
或者

代码: 全选

xwininfo -tree -root
确认下窗口还在不在。如果窗口在,那可以再用

代码: 全选

xwininfo -stats -id 窗口ID
来进一步确认Map State是不是IsUnMapped

可以从外部观察到隐藏事件的发生,但没法知道是什么发起了隐藏命令。如果你不想你的程序窗口被其他程序隐藏,可以尝试在窗口中监视hideEvent(https://doc.qt.io/qt-5/qwidget.html#hideEvent)或者更底层的 native event(https://doc.qt.io/qt-5/qwidget.html#nativeEvent 或者 https://doc.qt.io/qt-5/qcoreapplication ... ventFilter),来阻止隐藏或在隐藏后立即恢复显示

你可以用如下python程序来模拟外部程序隐藏,需要安装python-xlib或python3-xlib,看你用python2还是python3

代码: 全选

import Xlib.display
d = Xlib.display.Display()
d.create_resource_object('window', 窗口ID).unmap()
d.sync()
头像
flwwater
帖子: 762
注册时间: 2010-10-31 9:15
系统: kubuntu 24.04

Re: Qt编写的程序运行过程中界面突然不显示

#5

帖子 flwwater » 2021-03-11 14:50

shortcut.png
你的d-bus有没有注册过这个东东,比如我的ktorrent这个程序,它有mainwindow对象(Qt程序都有吧...),通过d-bus,就能传输函数给它,我这里传输的是org.qtproject.Qt.QWidget.show这个函数,通过快捷键,本来隐藏的程序就能显示出来,你可以自己根据我的图片自己琢磨一下
我用的是KDE,在系统设置-》快捷键-》自定义里添加的。
个人收藏的数百个精美动态壁纸:
https://url17.ctfile.com/d/15983117-593 ... 768?p=6220
(访问密码:6220


个人收藏的经典国语音乐和纯音乐(钢琴,笛子,二胡等):
https://url17.ctfile.com/d/15983117-446 ... 33e?p=6220
(访问密码:6220



如果访问密码不对,可试试这个密码 566816
回复