问题标签 [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++ - 在 QTimer 重置时触发不同的事件
我正在构建一个使用 QTimer 显示交通信号灯图像的小程序。所以我设置了我的计时器,一切正常。但我不知道,每次达到定时器间隔时,如何让机器人灯 ->show() 和 ->hide()。我可能有这一切都错了,我还在学习,所以请指教。
主窗口.h
主窗口.cpp
我还禁用了单击时的“开始”按钮,因此计时器不能运行两次。
因此,在主窗口 UI 上,我基本上有一个 Spinbox,它接受用户的输入,这是我将其传递给 Qtimer 的时间,然后我有 3 个带有红色绿色黄色灯光的图像,它们必须在间隔中显示和隐藏. 所以我创建了几乎类似于手动循环的东西。Qtimer 启动并显示绿色,然后进入 ShowYellow Slot,然后显示 Red 插槽,所以现在,它假设进入 Green 插槽然后变为黄色,但它不会再次进入 Green。
谁能告诉我为什么不。
c++ - 我可以使用 singleShot(true) 使正在运行的 QTimer 在下一次拍摄后停止吗?
我有一个QTimer
触发周期性事件。
我不想直接停止计时器,因为我想将一些特殊信号同步到最后一个事件。
我可以通过设置它来实现这setSingleShot(true)
一点,QTimer
以便下一次拍摄将是单次拍摄,并且计时器在下一次拍摄后停止吗?
编辑:
它似乎工作。但setSingleShot(true)
似乎不是原子的:我有时会在计时器停止之前观察到 2 次射击。
c++ - 终止 QThread 时,内部 QTimer 不会从正确的线程中终止
我有一个创建 QGraphicsSimpleTextItem 的 QThread。当我关闭我的应用程序时,我尝试完成线程然后终止它。
QGraphicsSimpleTextItem::setFont()
一切都很好,直到我在我的线程中添加一个调用。如果我这样做,Qt 的内部 QFontCache 系统将被调用,并将启动一个 QTimer(从我的线程)。然后当我终止 QThread 时,当 Qt 清理事件循环时(从主)调用 killTimer 并且我得到错误:
我应该怎么做才能避免这个问题?这不应该被视为字体缓存机制的错误吗?谢谢你的帮助。
qt - QTimer 用完窗口管理器对象的所有句柄
我正在使用 aQTimer
来触发对函数的重复调用,但是它最终因以下错误而崩溃
正如此链接中所述,计时器对象占用了这些句柄。有没有办法阻止这种情况?我的程序需要一直运行而无需重新启动且无需用户输入,并且增加系统容限(如某些人所建议的那样)似乎只会延迟崩溃而不是防止崩溃。
定时器代码
计时器不会在其他任何地方重新创建。
c++ - 在 Qt 中计时事件的最佳方法
我正在用 Qt/c++ 编写一个软件,它通过串行与 arduino 和其他电子设备进行通信。
我需要启动一系列事件,这些事件以不同的时间调用不同的插槽,如下所示:
- 启动电机 1 20 秒
- 10 秒后启动电机 2
- 停止电机 1
- 更改电机 1 速度
- 启动电机 1 30 秒
我试过 QTimer::singleShot 但它只适用于没有参数的插槽,我需要不时设置不同的参数,如电机速度。
现在我正在使用与 currentTime do dieTime 相对的延迟函数,但跟踪所有设备的时间很复杂。
这样做的最佳解决方案是什么?建议?
c++ - 传递当前时间变量
我试图让一个文本编辑框使用 QTimer 每 5 秒显示一次当前时间。我在一个单独的方法中计算了当前时间,然后让 QTimer 调用该方法并显示当前时间。我一生都无法弄清楚如何将变量从 setCurrentTime 方法传递给 QTimer。我确定这是一个非常容易解决的问题,但我无法弄清楚。这是我的代码。
timeout - QTimer 不触发(触发)超时
我想使用 Qtimer 来暂停执行给定的代码块,而在另一个线程中它会执行其他操作。我用 qeventloop quit 连接了线程的超时,但问题是,没有调用超时。当另一个发射发生时,超时被神奇地触发,或者如果我添加另一个连接,超时也会被触发。我想我错过了关于使用 qtimer、qeventloop 和 qthread 的一些东西。任何人都可以帮忙吗?我提取了用于测试的基本代码并将其放在这里:
主文件
时间
时间.cpp
//用于测试widget.h的gui
小部件.cpp
qt - Modal QDialog 仍然允许定时器调用槽?
在我的 Qt 程序中,我有一个模式QDialogs
,旨在停止一切,直到它被解除后才继续执行代码。它适用于它所在的函数——我在下一行代码上放了一个断点,qDialog::exec()
直到我关闭对话框后它才会中断。
但是,QTimer
在其超时时有一个连接到插槽,即使模式对话框启动并执行其插槽中的代码,它也会继续运行。
我想我可以在显示modal dialog
. 但是,可能存在对话框与计时器完全不同的类的情况。有没有办法真正停止程序的执行,直到QDialog
被解雇?
例子:
输出仍然显示“在模态期间见我?” 而在exec()
;
c++ - 具有自己的 QTimer 和 QThread 的自定义类
我想为机器人传感器的某些项目创建一个具有自己的 QTimer 和 QThread 的类。经过一番搜索,这就是我想出的
我收到此错误
c++ - Qt 如何终止使用 startTimer() API 启动的计时器?
完成后,我会更新倒计时计时器,但timerEvent(QTimerEvent *e)
我仍在调用。那么杀死它的正确方法是什么?killTimer(timerID)
timerEvent()
编码:
如果有帮助。我有两个这样的计时器在同一个 GUI 线程的两个不同的类中运行。我将如何杀死它?