问题标签 [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 -> 从 Gui->Thread->Qtimer 设置值
我有一个特殊的相机类,它应该尽可能频繁地调用以获得下一张照片。gui 本身包含一些滑块来更改相机参数和图像输出的设置。
这是我的类的简单结构:
我的主窗口包含:
我的相机线程包含:
我的相机工作者包含:
所以问题是,我必须调用 Signal -> Slot -> Signal -> Slot -> camera.setValue 来为相机获取一个值,但我有 20 个值。有没有更好的方法来做到这一点?
c++ - 取临时地址?
我尝试使用 QT 的 Push Mode 和 QTimerEvent 来实现 timerEvent。我的代码返回以下错误“获取临时地址”。怎么了?任何帮助,将不胜感激。这是代码
qt - 如何使用 QTimer 修复 QTGLWidget 以减少渲染时间?
我目前正在为我的程序使用 QtOpenGL。我的程序在 3D 空间中绘制点。这些点可以是一到几千之间的任何数字。我正在使用函数“glusphere”来绘制球体来表示每个点。有了这个,每个帧都被创建了,我需要使用 QTimer 将每个帧显示为动画。这个动画应该是fps控制的。比如fps=30,我会把t=1000/30给QTimer的setInterval(t)。不管fps=10还是30,我发现fps对我的程序没有太大的改变。我通过将 fps 设置为 0 来寻找问题,并通过使用 setInterval(0) 观察渲染时间需要多少。结果如下:
n = 球体数量
当 n=10 时:28ms => 大约 30ms
当 n=100 时:87ms => 大约 90ms
当 n=150 时:137ms => 大约 140ms
当 n=1000 时:598ms => 大约 600ms => 0.6sec
从上面的结果来看,每一帧的渲染时间随着球体的数量线性增加。以下是我的代码的一部分:
澄清:
- 每帧的渲染时间根据球体的数量而变化。
- 球体的数量不应改变渲染时间
- 即使它绘制了 1000 个球体,它也会花费半秒
- 您认为问题在于使用胶球吗?
- 如果有另一种方法来绘制球体,是否有可能超过 100 fps?
有人可以解释一下造成这种缓慢渲染的瓶颈在哪里吗?
c++ - 在 QTimer::singleShot 中删除它
在我的 qt 服务器应用程序中处理请求时,有时我必须等待“资源”变得空闲。据我了解,在插槽实现中休眠会停止消息循环,因此这可能无法按预期工作:
我曾想过将 QTimer 与 singleShot 一起使用。我的研究表明,我无法通过计时器的信号传递参数。
我的下一个方法是为每个请求创建一个新对象的实例,将参数放入此请求,并将此对象用作计时器信号的接收者。在这个插槽中,我必须删除请求对象,因为我没有存储对它的引用(并且不想)。
有没有更好的方法来释放请求对象,甚至有更好的方法来解决我的问题?如果不是:delete this;
在这种情况下使用是否有效?
c++ - QTimer not firing in a thread
I have an Qt5 c++ app with 2 threads, thread A is started when the main program starts up. The start method of thread A runs successfully.
So far so good. Next, in the main program I send a signal to Thread A to start a QTimer, which it does - but that timer never expires!
Thread B handles tcp connections. When I initiate a telnet connection to my app, thread B fires up and suddenly I see my Qtimer from thread A expiring at normal intervals.
Why is the QTimer from thread A not expiring until thread B starts?
I suspect my threads are getting messed up. note the last section of code below products this:
Which suggest my worker object (this), is in a different thread from my timer object. This timer thread address is actually the MAIN thread. Why? I'm confused.
Suggestions?
In my main app I create and start my thread like this:
and in my main app I emit a signal to the new thread:
which runs a slot in my thread (TheController object):
c++ - 为什么几个 QTimer 只使用最小的间隔?
我有一个奇怪的问题困扰了我好几天。互联网研究等也没有太大帮助。我目前正在开发一个简单的应用程序,其中四个矩形应该以不同的速度沿着方形路径移动。一切工作正常,除了无论我做什么,所有矩形都以完全相同的速度移动。
我有一个类RectClass,它定义了一个矩形。zeichenFeld是它的父小部件,我在其中创建了四个矩形(这意味着 RectClass 的四个实例)。每个矩形都有特定的坐标、颜色和保存当前状态的文件,但这不是我的问题的一部分。
以下是我的代码的重要部分:
zeichenFeld.cpp
矩形类.h
矩形类.cpp
当zeichenFeld::start被调用时,所有四个计时器总是使用我选择的最小间隔(在这个例子中:10),而完全忽略我设置的其他间隔。我什至不知道为什么会这样,但我对 Qt 还是很陌生,所以希望你们能帮助我!
顺便说一句:我遗漏了很多代码。对于任何错误,我深表歉意,英语不是我的母语。
提前致谢。
qt - 在库代码中使用 QTimers - 检查现有的事件循环?
我正准备将空闲计时器添加到共享 KDE 库 (kwallet)。虽然我认为它主要是从已经有事件循环的线程中调用的,但我不能确定这一点。有没有办法检查这个?
或者,作为 Qt 开发的新手,在自己的线程中生成该计时器的最精简方法是什么,以便它肯定会有一个事件循环?
macos - OS X 上的单次 QTimer 快速触发多次且过早
我已经在一个资源(类)实例上实现了一个空闲计时器,它的实例可以同时在多个应用程序中打开。因此,这idleTimer
不仅是一个简单的QTimer
,而且时隙(触发器)需要验证在过去 N 分钟内是否没有其他应用程序访问过相同的资源。如果是这种情况,则重置计时器(不更新lastAccessedTime
值),否则关闭资源。因此,计时器是单次计时器,并lastAccessTime
保存在 QSharedMemory 对象中。
这是一些跟踪输出:
该原理有效,但我注意到两件事:
- 计时器触发得有点早。当然,这会导致计时器被重置。
- 它快速连续发射数次。早期火灾应该重置它的事实没有丝毫影响。
下面是我的代码的相关部分,包括在每次资源访问时重置定时器的函数,以及定时器的触发槽。
知道我做错了什么吗?在将计时器(重新)设置为单次模式并重新启动(重新)之前,我会停止计时器。对象和应用程序标识符表明它确实是多次触发的同一个计时器,并且即使在我删除计时器对象之后它也可以被触发。
是否触发槽不是特定于应用程序(甚至是实例)的,以某种方式导致 1 个实例idleTimer
从设置此计时器实例的各种应用程序中的所有其他实例接收触发信号?idleTimer
仅在类析构函数和/或timeOut
<=0 时设置为 NULL,所以我很难用 NULL 计时器对象调用我的触发槽!
从计时器安装功能(ashandleIdleTiming
的成员本身):KWallet::Wallet
idleTimer
定时器触发槽:
pyqt - pyqt 代码虽然移动到不同的 QThread,但仍处于阻塞状态
我试图通过将一些阻塞代码移动到单独的 QThread 来使我的 PyQt4 程序更具响应性。由于它不起作用,我创建了这个最小的示例作为演示:
这段代码的问题是 sleep-command 仍然会阻塞用户界面。当我在 Sleeper 类之外创建、连接和运行 QTimer 时,我发现它按预期工作,但我不明白为什么。
c++ - 如何计算传感器从其 3D 点位置集覆盖的总距离?
我正在使用 Qt GUI 来跟踪传感器的运动。mainwindow.cpp 文件是:
ATC3DG.h 是传感器的头文件。record.x、record.y、record.z 以英寸为单位给出传感器的 x、y 和 z 位置的 3D 位置。基本上我正在做的是,当我单击开始按钮时,传感器会打开,QTimer 会从超时期间发出的信号开始,并且showvalues()函数将开始执行。该函数在 Qt GUI的标签中显示传感器的位置。在这个循环中,点将被传感器的所有位置值填充。
停止按钮停止计时器并使用点向量中包含的所有点计算距离。这是使用以下方法完成的:
总和给了我完全奇怪的价值观。例如,当传感器仅移动了大约 5 或 6 英寸时,它显示的值在 100 秒等范围内。
我的 mainwindow.h 文件是: