问题标签 [qtimer]
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.
c++ - Qt - 简单循环的执行逐渐减慢
我在我的主窗口代码中有循环,这只是改变屏幕上一些文本框的颜色。这很简单for(int i=0; i<200; i++)
,但我想让用户看到每个颜色变化,所以在循环中我尝试添加10ms 暂停,所以每次执行都在屏幕上可见。
我用这个:
问题是,我想一直保持这个10 毫秒的速度,所以整个操作大约需要 2 秒。不幸的是,它逐渐变慢,非常难,最后约 20 次处决甚至需要大约 1 秒
当 i<20~50 时它看起来相当不错,添加更多使其显着减慢......
我想到了我的不是全新的电脑,但操作起来真的很简单,所以我不认为这是因为我的电脑速度慢。我假设我的方法是错误的
PS。在执行期间,ram usage
我的应用程序大约为~21MB,cpu
大约20-30%
c++ - QTimer 与扩展 QThread 无关
当有人用自己的类重载线程时,这个问题似乎已经以一种或另一种形式得到了回答,但是如果只是尝试使用 QTimer 类而不扩展 QThread 类呢?我正在尝试将 QTimer 用于 QT。他们的简单例子
http://qt-project.org/doc/qt-4.7/qtimer.html
他们的例子如下:
但是当我尝试这样做时,我不断收到错误:
QObject::startTimer:定时器只能用于以 QThread 启动的线程。
我正在通过他的游戏引擎开发系列在 YouTube 上浏览 Jamie King 的一组视频。我计划关注他的视频,所以目前不推荐任何抽象的完全不同的编码技术。这就是我到目前为止所拥有的。
我尝试制作一个小型的快速辅助项目,以使代码尽可能简单。我没有任何构建错误 - 它们仅在程序开始后发生
QTimerApp.cpp
GLWin.h
GLWin.cpp
我提出的大多数研究都与当他们的类扩展了 QThread 时重载 run() 函数有关。据我所知,我不应该扩展或创建另一个类来发生简单的计时器循环。已经扩展了 QWidget,我的对象已经是 QObject 类型。
任何帮助都非常感谢。谢谢!
c++ - QTimer->remainingTime() 返回 -1371648957
当我使用 Qt 5.3.2 运行以下代码时,剩余时间设置为 -1371648957。
如果我之后继续在循环中打印剩余时间,负值只会增加,因此timeout()
永远不会被触发。这对我来说真的没有意义。
为了提供一些上下文,这段代码在一个单独的线程中运行,并且 QTimer 不是在线程对象的构造函数中创建的。
这是一些更新的代码,可以使事情更清楚。
我已经检查了计时器创建是否在单独的线程中正确运行,并且线程内的 Qts 事件循环正在工作,因为我可以emit
发出信号表明主线程接收。
如果我这样设置计时器也没有区别
如果我将秒数更改为 100000 或 0,则剩余时间只会略微更改为 -1374002988,但当我重新启动应用程序时它仍然会发生这种情况,但长度保持不变。
我还检查了timer->remainingTime()
在线调试器,内部inter
变量正确设置为 100。
这可能是一个内存地址或类似的东西吗?
qt - How to use QTimer singleShot with QEventLoop in Qt
I need to open QDialog by using QTimer singleShot and wait for a status flag. If this variable is true then continue.
This is my code
StatusFlag = FALSE;
In NewGUI constructor StatusFlag is set to TRUE
Current Output is
Expected Output is
If i comment the line
QTimer::singleShot(0, this, SLOT(OpenWindow()));
Then the output is
Do you have any suggestion?
c++ - Qt:有没有办法以一定的时间间隔调用一系列槽?
我现在的工作方式是将 a 连接QTimer
到第一个插槽,在第一个插槽内它将触发另一个单次触发QTimer
,这将触发第二个插槽......等等。
如果我一次更新所有小部件,GUI 将停留一秒钟。但这很明显。所以我想避免这种情况。
但这很难写代码。您必须在QTimer
任何地方添加。有没有更好的解决方案?
编辑:这就是我更新小部件的方式,也许有更好的方法?
如您所见,它只是一堆默认的 =, ! 如果其他事情...
python - PyQt:制作截图和 QTimer
这是一个初学者的问题,所以我对此深表歉意(以前从未使用过 Python,但必须尽快修改现有脚本)。
我尝试为许多网页制作屏幕截图。进展顺利,但我注意到即使链接不同,有时也会出现重复。似乎需要为此使用 QTimer 并且简单的超时解决方案不起作用。我以前有过:
1)Screenshot
具有capture
将 Web 链接作为参数的方法的类
2) 一个实例并多次Screenshot
调用,同时循环遍历 main 中的 Web 链接列表capture(url)
现在我必须使用QTimer
,到目前为止我看到的所有例子都把它放在 中__init__
,这就像
我必须在初始化 ( def __init__(self, urlLst, parent=None)
) 时传递 url,这让我觉得我宁愿提前收集所有 url 并制作一个 Screenshot 实例,我也只会调用一次。因此,我应该遍历初始化块中的 url 并在那里调用捕获。不用说,我显然做得不好,capture
甚至没有被叫到。(我也尝试过另一种方法——每个链接创建一个实例——但也没有太大的成功)。关于如何解决它的任何想法?非常感谢您!
c++ - 从线程重绘启动画面/禁用断言
问题
我想使用 aQTimer
来更新绘制进度条的派生QSplashScreen
项(使用绘制命令,而不是小部件)来估计程序何时开始运行。
必要时,这发生在exec
调用QCoreApplication
. 通过在第二个线程中放置一个计时器,并在启动屏幕中调用一个更新进度并重新绘制小部件的函数,我已经在 X11 和 Windows 上让它工作(仅在发布模式下)。但是,这在调试模式下不起作用,因为它会产生以下错误:
"ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread."
我并不真正担心这个断言,因为代码在发布时不会崩溃,它只是一个闪屏,但是我需要能够在调试中运行程序,所以我想要么a)重构代码所以它不会触发断言,或者 b) 禁用此特定断言。
试过:
- 使用
update()
而不是repaint()
.finish
这不会导致断言,但它也不会重新绘制,因为主线程太忙于加载共享库等,并且在我准备好在启动屏幕上调用之前不会处理计时器事件. - 从
QTimer
主循环开始。结果与上述相同。 - 使用
QT::QueuedConnection
. 结果相同。
主要的
启动画面
我的主窗口
c++ - 使用 QTimer 的 Qt 登录超时
当用户名/密码输入错误太多次时,我正在尝试实现登录超时。但我无法这样做。我的代码如下
c++ - Blackberry10 cascade qmlRegisterType 无法注册对象
这就是我注册计时器的方式:
这就是我使用它的方式: