我正在Qt中处理一个项目(PySide,但欢迎任何Qt解决方案)。我需要有一个图像淡入和做随机动画。这已经完成了,但它创建了自己的任务栏项目(讨厌)!代码:
self.img_Check = QPixmap("resources/checkmark.png")
self.lab = QSplashScreen(self.img_Check)
self.lab.setWindowFlags(Qt.WindowStaysOnTopHint)
self.lab.setMask(self.img_Check.mask())
如果我删除setWindowFlags(Qt.WindowStaysOnTopHint)
,那么它工作得很好,但它不是"始终在顶部",如果用户使用另一个应用程序,他将看不到动画。
一定有一种方法可以在不创建菜单栏项目的情况下制作一个始终处于最佳状态的动画,但我不确定如何制作。我确实有一个QMainWindow,以防你好奇。
我尝试了很多旗帜组合,但我不能全部做到3:-显示在其他Windows的顶部,如MS Word。-不接管活动窗口状态。-此动画的窗口没有显示任务栏项目。
上下文:为了防止你好奇我为什么需要这样做,该程序会在后台备份用户的文件,当一个文件完成处理时,它会以50%的不透明度在几秒钟内以"复选标记"图标消失,这样用户就知道备份已完成。我无法使用其他方式来指示备份已完成。这就是规格。
调用setWindowFlags
时,将删除除参数中指定的标志之外的所有窗口标志。因此Qt.SplashScreen
标志被删除,窗口不再是启动屏幕。
您应该将Qt.WindowStaysOnTopHint
指定为QSplashScreen
构造函数的第二个参数。参见文档:
QSplashScreen::QSplashScreen(const QPixmap&pixmap=QPixmap(),Qt::WindowFlags f=0)
应该不需要设置小部件标志f,也许除了Qt::WindowStaysOnTopHint。
如果以后需要动态添加Qt.WindowStaysOnTopHint
,可以执行类似的操作
self.lab.setWindowFlags(self.lab.windowFlags() | Qt.WindowStaysOnTopHint)
或
self.lab.setWindowFlags(Qt.SplashScreen | Qt.WindowStaysOnTopHint)