gpt4 book ai didi

c++ - QSlider 、 QTimer 和 valueChanged 用法

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:03 24 4
gpt4 key购买 nike

我尝试同时使用 QSlider、QTimer 和 valueChanged() 信号,但我需要区分 slider 的值是由用户还是计时器滴答更改的。我怎样才能做到这一点?通过下面的代码,我尝试确定 slider 何时被计时器更改,但我无法确定用户何时更改信号。 (此外,它是一个 OpenGL 动画,即使时间轴每隔 30 Hz 播放一次动画, slider 的行为就像时间轴一样,因此如果用户想使用 slider 来制作动画向前或向后,我需要检查 slider 的信号。但是 slider 有 1 秒的滴答声定时器)

connect(timer, SIGNAL(timeout()), this,SLOT(timerTick()));
connect(slider, SIGNAL(valueChanged(int)),this, SLOT(sliderChange()));

void MainWindow::sliderChange()
{
if (userInterrupt)
{
.. Call Function A
}
}
void MainWindow::timerTick()
{
slider->setValue(slider.value()+1);
userInterrupt=false;
}

编辑:添加了发件人,但由于递归,它无法清楚地运行。我仍然无法决定信号

 connect(timer, SIGNAL(timeout()), this,SLOT(sliderChange()));
connect(slider, SIGNAL(valueChanged(int)),this, SLOT(sliderChange()));

void MainWindow::sliderChange()
{
QObject * obj =sender();
if (obj==slider)
{
.. Call Function A
}else
{
slider->setValue(slider.value()+1);
}
}

最佳答案

您可以使用 QObject::sender 获取指向发出信号的 QObject 的指针。

关于c++ - QSlider 、 QTimer 和 valueChanged 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com