问题标签 [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.

0 投票
1 回答
558 浏览

c++ - Qt - 简单循环的执行逐渐减慢

我在我的主窗口代码中有循环,这只是改变屏幕上一些文本框的颜色。这很简单for(int i=0; i<200; i++),但我想让用户看到每个颜色变化,所以在循环中我尝试添加10ms 暂停,所以每次执行都在屏幕上可见。

我用这个:

问题是,我想一直保持这个10 毫秒的速度,所以整个操作大约需要 2 秒。不幸的是,它逐渐变慢,非常难,最后约 20 次处决甚至需要大约 1 秒

当 i<20~50 时它看起来相当不错,添加更多使其显着减慢......

我想到了我的不是全新的电脑,但操作起来真的很简单,所以我不认为这是因为我的电脑速度慢。我假设我的方法是错误的


PS。在执行期间,ram usage我的应用程序大约为~21MBcpu大约20-30%

0 投票
2 回答
383 浏览

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 类型。

任何帮助都非常感谢。谢谢!

0 投票
0 回答
294 浏览

qt - 未找到类“QtimerEvent”错误的 RTTI 符号

0 投票
1 回答
1682 浏览

c++ - QTimer->remainingTime() 返回 -1371648957

当我使用 Qt 5.3.2 运行以下代码时,剩余时间设置为 -1371648957。

如果我之后继续在循环中打印剩余时间,负值只会增加,因此timeout()永远不会被触发。这对我来说真的没有意义。

为了提供一些上下文,这段代码在一个单独的线程中运行,并且 QTimer 不是在线程对象的构造函数中创建的。

这是一些更新的代码,可以使事情更清楚。

我已经检查了计时器创建是否在单独的线程中正确运行,并且线程内的 Qts 事件循环正在工作,因为我可以emit发出信号表明主线程接收。

如果我这样设置计时器也没有区别

如果我将秒数更改为 100000 或 0,则剩余时间只会略微更改为 -1374002988,但当我重新启动应用程序时它仍然会发生这种情况,但长度保持不变。

我还检查了timer->remainingTime()在线调试器,内部inter变量正确设置为 100。

这可能是一个内存地址或类似的东西吗?

0 投票
1 回答
3282 浏览

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?

0 投票
5 回答
631 浏览

c++ - Qt:有没有办法以一定的时间间隔调用一系列槽?

我现在的工作方式是将 a 连接QTimer到第一个插槽,在第一个插槽内它将触发另一个单次触发QTimer,这将触发第二个插槽......等等。

如果我一次更新所有小部件,GUI 将停留一秒钟。但这很明显。所以我想避免这种情况。

但这很难写代码。您必须在QTimer任何地方添加。有没有更好的解决方案?

编辑:这就是我更新小部件的方式,也许有更好的方法?

如您所见,它只是一堆默认的 =, ! 如果其他事情...

0 投票
0 回答
159 浏览

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甚至没有被叫到。(我也尝试过另一种方法——每个链接创建一个实例——但也没有太大的成功)。关于如何解决它的任何想法?非常感谢您!

0 投票
1 回答
887 浏览

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. 结果相同。

主要的

启动画面

我的主窗口

0 投票
1 回答
143 浏览

c++ - 使用 QTimer 的 Qt 登录超时

当用户名/密码输入错误太多次时,我正在尝试实现登录超时。但我无法这样做。我的代码如下

0 投票
0 回答
54 浏览

c++ - Blackberry10 cascade qmlRegisterType 无法注册对象

这就是我注册计时器的方式:

这就是我使用它的方式: