C++ 找到将QGraphicsview渲染为QImage的精确帧时间的最佳方法是什么?
正如我在这篇文章中已经问过的,但没有得到答案,我需要在准确的时间获得一个事件,以便在QGraphicsview中拍摄场景,它正在播放一些动画,以便能够以30 fps的速度渲染到视频文件,计时器不精确,而且我使用了QTimeLine的frameChanged事件,但它也不精确!我想知道如何将QGraphicsview渲染成视频电影 对于另一个解决方案,我将计时器和另一个带有简单插槽的对象移动到一个新线程中,当我在新线程中的对象的插槽中做事情时,它工作得很好,但是当我再次将计时器的超时信号连接到我的主GUI线程的插槽时,主线程中的插槽触发得很晚而且不规则,而新线程中的对象的插槽则在精确的时间内触发!看C++ 找到将QGraphicsview渲染为QImage的精确帧时间的最佳方法是什么?,c++,qt,animation,qgraphicsview,C++,Qt,Animation,Qgraphicsview,正如我在这篇文章中已经问过的,但没有得到答案,我需要在准确的时间获得一个事件,以便在QGraphicsview中拍摄场景,它正在播放一些动画,以便能够以30 fps的速度渲染到视频文件,计时器不精确,而且我使用了QTimeLine的frameChanged事件,但它也不精确!我想知道如何将QGraphicsview渲染成视频电影 对于另一个解决方案,我将计时器和另一个带有简单插槽的对象移动到一个新线程中,当我在新线程中的对象的插槽中做事情时,它工作得很好,但是当我再次将计时器的超时信号连接到我的
thread = new QThread();
timer = new QTimer();
pp = new PrecisePolling();
timer->setInterval(33);
timer->setTimerType(Qt::PreciseTimer);
QObject::connect(timer, &QTimer::timeout, pp, &PrecisePolling::timeout);
timer->start();
timer->moveToThread(thread);
pp->moveToThread(thread);
thread->start(QThread::Priority::TimeCriticalPriority);
QObject::connect(pp, &PrecisePolling::nowtimeout, this, &MainWindow::timeoutt);
void MainWindow::timeoutt()
{
const std::uint64_t ms = QDateTime::currentMSecsSinceEpoch();
qDebug() << "GUI "<< ms - previousPollingTime;
previousPollingTime = ms;
}
请编辑您的问题以显示您当前使用的代码,最好是a。请编辑您的问题以显示您当前使用的代码,最好是a。
the worker class
void PrecisePolling::timeout()
{
emit nowtimeout();
const std::uint64_t ms = QDateTime::currentMSecsSinceEpoch();
qDebug() << "THR "<< ms - previousPollingTime;
previousPollingTime = ms;
}
THR 32
GUI 32
THR 33
GUI 33
THR 34
GUI 34
THR 32
GUI 32
THR 33
THR 33
THR 33
THR 34
THR 32
GUI 190
GUI 0
GUI 0
GUI 0
GUI 0
THR 34
GUI 9
THR 33