问题标签 [qsplashscreen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
153 浏览

python - 添加启动画面后 PyQt4 应用程序崩溃

我正在尝试向我的 PyQt4 GUI 应用程序添加启动画面。代码运行良好,直到我关闭导致 Python 崩溃并显示“Python.exe 已停止工作”的应用程序。这是代码。

Python 停止工作

我已经尝试了一切。如果我不添加启动画面,应用程序将完美关闭。但是,在我添加启动画面并关闭应用程序后,python 崩溃了。因此,问题出在内存中的对象或类似的东西上,但我还不能解决它。请帮忙。

0 投票
1 回答
684 浏览

c++ - 由于线程问题,Qt Gui 未更新

我正在使用第三方库,它需要 60-90 秒才能动态加载多个库。这是一个不幸的设计选择,但我不能改变谁构建了他们的代码。

我正在尝试使用 QSplashScreen 至少告诉用户在我在后台执行此一次性加载时等待。问题是启动画面没有绘画。加载库时,我可以看到一个未绘制空间的窗口。之后我可以在关闭它之前看到启动画面。

我查看了类似的问题(例如Qt Splash Screen not shown),但似乎没有任何问题可以解决我的问题。我试过加载一个空的 QPixmap 并给它一个纯色。这也没有出现。

我想确保在开始加载过程之前它至少绘制一次。

- - - - - - - - - - - - 编辑 - - - - - - - - - - - - - ------

让我重申对 preLoad 的调用正在阻塞线程。这不是一个选择。我已经为该过程尝试了一个单独的线程。我也尝试过为启动画面使用单独的线程(打开它,然后在另一个线程完成时完成)。我尝试在两个线程之间使用信号量来完成此操作,虽然一切正常(包括启动屏幕),但加载需要 200-800 秒。这根本是不可接受的。因此,我想从这个角度看看它周围是否有距离。

-------------------------最终解决方案------------------------ ---------

多亏了下面的评论,我才意识到 Qt 有自己的线程功能。我看到的所有问题似乎都是由 std::thread 和 Qt 自己的实现的相互作用引起的。

我有一个可行的部分解决方案。它不像它可能的那样整洁,但我想将它包含在问题线程中。

0 投票
2 回答
324 浏览

python - QSplashScreen.setPixmap 将 Splashscreen 移回默认位置

我创建了一个带有QPixmap的QSplashScreen并将其移动到我的第二个监视器(不是默认监视器)的中心:

我现在正试图在我的像素图中添加一些东西,同时显示 SplashScreen:

似乎用于创建 QSplashScreen 的 QPixmap 已被复制并且不再是相同的引用,因此对此的更改没有直接影响。

此外,使用setPixmap()将 SplashScreen 移回默认监视器上。


是否可以选择直接在 Splashscreen 的活动 QPixmap 上绘制或设置新的而不需要再次移动屏幕?

(使用 move-command 似乎不是一个好的选择,当您在短时间内快速重新绘制时 - 启动画面会在两台显示器上闪烁)


用法示例:

0 投票
2 回答
1037 浏览

c++ - 有什么方法可以确保 QSplashScreen 已在屏幕上重新绘制?

我有一个问题,在带有 Xorg(Ubuntu 14.04)和 Qt 5.5.1QSplashScreen的 Linux 上直到我进入事件循环才被绘制。即使我QApplication::processEvents()多次调用,它仍然没有被绘制,即使在 1000 次调用之后,虽然窗口已经在屏幕上,保留了应用程序启动之前存在的原始像素,因此实际上是不可见的*。从这个答案中,我想到了使用 call 的定时循环QApplication::processEvents(),如下所示:

上面的代码主动休眠 30 毫秒以尝试QSplashScreen重新绘制。这对我有用,但我不确定它是否总是有效,例如在繁忙/缓慢的 CPU 或任何其他条件下(根据经验发现 30 次迭代的神奇值)。

另一种一般来说相当侵入性的方法是在另一个线程中进行所有必要的加载,只是为了确保QSplashScreen在主线程中确实有一个活动的消息队列。由于需要大量重做主程序,这看起来不是一个很好的解决方案。

那么,有没有什么办法可以确保它QSplashScreen已经被重新粉刷,使其窗口不包含垃圾,然后才能继续进行长时间的阻塞加载过程呢?


*当我将一个窗口移到启动画面后面时,我发现了这一点

0 投票
1 回答
464 浏览

c++ - 为什么 QSplashScreen 在显示时不居中?

我在 aQSplashScreen的构造函数中创建 a QMainWindow

启动画面的左上角位于屏幕中央。简单的解决方法是移动它(因为它的大小是已知的),如上所述。

根据文档

启动画面出现在屏幕中央。

那么这里出了什么问题?

0 投票
1 回答
328 浏览

python - qsplashscreen 无法正确显示,直到 app.processEvents() 被调用两次

PyQT4.11
Python 2.7

我一直在尝试创建一个启动屏幕以在选择特定选项卡时显示加载消息。当app.processEvents()被调用时,我会显示一个灰色框而不是图像,但是如果我app.processEvents()在调用第一个函数后添加第二个,则会显示正确的图像,直到完成后关闭启动画面。

我玩过睡眠计时器,重新绘制,更新,关闭和重新显示选项卡和选项卡小部件,结果喜忧参半,在极少数情况下它会起作用,但通常不会。任何人都可以阐明我所缺少的东西吗?

0 投票
1 回答
219 浏览

c++ - 使用 QSplashScreen 时如何显示任务栏图标

所以我有以下代码:

这运行良好,并且启动画面完全按照我想要的方式显示,但它没有在任务栏中显示图标,因此可以单击另一个窗口并且永远无法再次看到启动栏(它隐藏在其他窗户后面)。

我已经尝试使用窗口标志Qt::WindowStaysOnTopHint,但如果我使用它,任务栏中仍然没有图标,现在它总是在所有其他窗口的顶部(我不想要)。

到目前为止,我已经浏览了一些窗口标志,并且已经用谷歌搜索了很长一段时间,我试图展示它。

另外,我知道我可以给构造函数一个父窗口,但是这段代码在里面main.cpp,所以我没有办法给它一个父窗口(带有空构造函数的 QWidget 也不起作用)。

TLDR:我希望我的 QSplashScreen 在任务栏中有一个图标。

先感谢您!

0 投票
1 回答
206 浏览

qsplashscreen - QSplashScreen 不显示图像 pyqt5

我试图在加载主窗口之前显示启动画面,但显示的是透明窗口而不是预期的图像。启动画面应该在 Dashboard 的导入和实例化加载后显示,这需要几秒钟,但图像仅在启动画面即将关闭时显示。下面是我的代码:

0 投票
1 回答
597 浏览

python-3.x - 显示带有 QMovie 的 QSplashScreen 和 QProgressBar 崩溃。PyQt5

我尝试在其中显示带有 gif 和进度条的 SplashScreeen,同时使用方法进行计算。

因此,我有一个带有 PyQt5 MainWindow 应用程序的 main.py。在这个应用方法启动时,看我的calc.py:

self.results = calc.getSignals( a, aText)

显示启动画面和进度条,但随后 gui 冻结并崩溃。

所以从 main.py calc.py 开始。main.py 是一个带有 app = Qapplication() 和 MainWindow() 的 gui。好像:

我尝试在 calc.py 中使用 dapp.exit(exec_()) 而不是 dapp.deleteLater() 但它仍然崩溃了。

0 投票
1 回答
162 浏览

python - 如何更改启动画面中的图像

我正在开发一个应用程序,启动时需要检查各种事情,例如是否找到模块、与微控制器的连接是否正常等等。所以我决定制作一个启动屏幕,其中每个步骤都显示一条消息。我的想法是制作几张带有文字的图像('正在加载模块......'),('检查连接......')并在每次运行步骤时更改它们。以下代码是我想到的:

此代码仅显示最后一张图片,而不是每张图片之间的间隔为 3 秒。关于如何解决这个问题的任何线索?