问题标签 [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 回答
919 浏览

python - 迭代调用函数时 QtCore.QTimer.singleShot 滞后

我有一些文本显示的 pyqt gui,这些文本显示通过函数 updateTelemetry() 定期更新

这是我的代码的工作原理。当用户点击按钮时, buttonHandler 被调用。每 10 秒迭代调用一次 updateTelemetry。:

这种方法有效,让我每 10 秒左右获得一次更新。但是,每隔 10 秒,整个 gui 会冻结几秒钟,然后更新。我正在做的事情似乎正在阻止。我不确定这是怎么回事。我以为 qtimer.singleshot 会创建一个单独的线程?

有没有更好的方法来做我正在做的事情?

0 投票
1 回答
188 浏览

python - 如何将 QTimer 与 QWidget 一起使用(如果可能)

我需要一些帮助来弄清楚如何在小部件类下创建计时器。我有以下课程:

我正在尝试如下实现一个计时器:

它调用以下内容:

这个 QWidget 是从我的 MainWindow 调用的,我有另一个计时器可以正常工作,如上所示的 MainWindow,但我不知道如何让它与 QWidget 一起工作。我认为使用 QWidget 是问题所在,因为当我尝试运行它时出现以下错误:

AttributeError:“MainWindow”对象没有属性“_TimerClass__Time”

谁能告诉我我做错了什么或者正确的做法是什么?

0 投票
1 回答
205 浏览

python - PYQT QTimer 未进入处理程序定义

我有以下代码在我的主窗口中工作,但我需要在弹出窗口中复制它。运行时它不会进入处理程序 def,我不知道为什么。我已经尝试了我能想到的一切。有人可以告诉我我做错了什么吗?

0 投票
2 回答
588 浏览

python - 无法访问子窗口中的“def”-“MainWindow 对象没有属性‘updateTime’”

我有一个 MainWindow,我从按钮调用子窗口(弹出窗口),我无法访问 def updateTime(self),它给了我一个属性错误:

AttributeError:“MainWindow”对象没有属性“updateTime”

如果我取出 MainWindow 部分,它工作正常,所以我真的不明白问题是什么。任何帮助将不胜感激。

0 投票
1 回答
1241 浏览

c++ - 非单次 QTimer 只倒计时一次

编辑3:当我第一次问这个问题时,我认为这是因为QTimer只触发了一次;然而事实证明,这是因为我是根据它的remainingTime()成员来观察它的。事实证明,真正的问题是只remainingTime()倒计时0一次(并且timeout()信号确实是多次触发)。


我有一个单线程 Qt 应用程序,它有一个需要重复调​​用的计时器。我还有一个进度条来显示主计时器还剩多少时间,并且进度条每 40 毫秒由另一个计时器更新一次。

目前,主定时器设置为 15 秒(15 x 1000 = 15000 毫秒),但定时器仅触发其QTimer::timeout()事件一次。之后,remainingTime()总是返回0,即使isActive()返回true。(也isSingleShot()返回false。)


下面是相关代码:

奇怪的是,我知道这timer_updateProgress 确实有效(因为我可以看到进度条正在更新),并且它的初始化方式基本相同......


编辑:澄清一下,我确信我的所有其他逻辑都正常运行,因为我可以在调试器中看到:

  • timer_capture.isSingleShot()false
  • timer_capture.remainingTime()0
  • timer_capture.isActive()true
  • 所有计算结果都是正确的(例如time_passed

而且我还可以看到倒计时工作一次然后停止。

编辑2:我在末尾添加了以下代码以update_progress()进一步说明正在发生的事情:

我得到的输出是:

(无限)

0 投票
2 回答
1319 浏览

c++ - 主窗口关闭时 QApplication 不退出

我有一个 QMainWindow 用于浏览和查看图像。这些图像是使用我编写的包装器读取的特殊医学图像。

GUI 左侧有一个 QListview,它显示缩略图列表。当用户选择其中之一时,QVTKWidget 会在右侧显示相应的图像。我使用 vtkRenderWindowInteractor 来操作显示的图像。

我的主要看起来如下:

我的 closeEvent 如下所示:

问题是当我关闭 QMainWindow 时,应用程序不会终止。那就是命令提示符保持打开状态并且不会出现按任意键继续。如果我 Ctrl+break,则应用程序退出(显然)但我收到以下消息:

QObject::~QObject: 定时器不能从另一个线程停止

我注意到,如果我只选择一个缩略图并将其显示在 QVTKWidget 中,程序就会正常终止。但是当我选择一个缩略图,显示它然后选择另一个缩略图时,当我关闭窗口时程序不会终止。

我想知道是否有人可以告诉我我在这里做错了什么。我很乐意复制/粘贴更多代码,但目前我不确定哪些部分是相关的。

我已阅读以下内容希望得到答案,但到目前为止我一直无法解决此问题:

即使在 MainWindow 关闭后,Qt 应用程序仍保留在内存中

应用程序关闭后 Qt 进程保留在内存中

C++ 应用程序不会在退出时杀死所有进程

谢谢

0 投票
1 回答
900 浏览

qt - 避免 QTimer 发出超时信号

我已经启动 Timer 以等待某些条件为真。如果条件为真,那么我停止计时器并且不希望超时信号发出或执行连接的插槽。但是如果在指定时间内条件为假,则可以发出信号 timeout()。但无论如何它总是发出超时信号。我也使用了 blockSignals ( true ),但它不起作用。有人可以给我建议。

同样在 timerStop 函数中,我试图发出被破坏的信号,但我得到的响应是它无法连接。请给我建议。

0 投票
2 回答
7051 浏览

c++ - QTimer 插槽没有被调用

我有一个QTimerMainWindow课堂上,但update插槽没有被调用。我是 QT 的新手。我不知道会是什么。connect()返回true,我既没有收到来自 QT 创建者的消息窗口的警告,也没有收到运行时错误。它只是行不通。

0 投票
1 回答
3315 浏览

c++ - QTimer setInterval 不重置剩余时间

我有一个用 QT 编写的应用程序,它使用 QTimer。它基本上是一个游戏,所有动作都由计时器控制。游戏包括增加\降低游戏速度的能力。提高速度的代码是

speedUpValue并且maxSpeed是常数。几乎相同的代码用于降低速度。问题在于setInterval重置内部计时器,因此如果您继续快速增加或减少速度游戏最终将永远不会继续,因为remainingTime它会不断被重置。有没有办法remainingTime手动设置或更改间隔而不重置它?

0 投票
1 回答
1418 浏览

c++ - 为什么 QTimer 不是异步的?

我试图QTimer在我的窗口小部件上使用一个简单的对象,以便我可以计算一个方法完成所花费的时间。但令我惊讶的是,计时器在方法完成执行之前被阻塞了!即当有问题的方法结束时,计时器开始计时!

这是一个示例代码来演示我写的内容:

这是cpp文件:

我怎样才能获得异步行为,就像我们在 C# 中所拥有的那样,即 Timer 运行自己的执行线程?

更新:
感谢您的澄清,现在我如何将 Qthreads 与计时器合并,我是否必须从 Qthreads 继承并在我的子类中使用计时器,还是必须从 QTimer 继承并在其中执行一个线程!真的很混乱!