QSlider 不滑动

Posted

技术标签:

【中文标题】QSlider 不滑动【英文标题】:QSlider is not sliding 【发布时间】:2012-01-12 23:23:38 【问题描述】:

不知何故,我的 QSlider 没有滑动。我只能点击滑块,然后滑块改变他的位置。我已经检查了示例,但一切似乎都是一样的。

这是我的 QSlider 之一:

QSlider  *obj_scale_x= new QSlider(Qt::Horizontal);
obj_scale_x->setValue(10);
obj_scale_x->setToolTip(tr("Scale object"));
obj_scale_x->setRange(1,50);
obj_scale_x->setTickPosition(QSlider::TicksAbove);
connect(obj_scale_x, SIGNAL(valueChanged(int)), this, SLOT(objScale_x(int)));

我认为问题可能出在鼠标上。但这也不起作用。

void OpenGLScene::mousePressEvent(QMouseEvent *event)
 
    lastPos = event->pos();


void OpenGLScene::mouseMoveEvent(QMouseEvent *event)

    lastPos = event->pos();

我在基于 QGraphicsScene 的类中定义 Slider。可能是这样,但我无能为力。

【问题讨论】:

好吧,我们需要更多信息。你有问题的代码示例吗? 现在你的事件流是SLider -> Someobject,所以它只有在你点击它时才会滑动是完全合理的。反正真的很模糊,请解释一下。 不点击怎么滑动?键盘?还有什么?什么确切地不起作用? 只能通过突然移动来移动滑块。无法按下鼠标按钮并实现平滑移动。该功能有效。唯一不起作用的是平滑的滑动运动。我只能用鼠标跳到新的滑块位置。 【参考方案1】:

也许您的问题的答案是:

obj_scale_x->setTracking(true);

【讨论】:

【参考方案2】:

确保您没有为 UI 层次结构中较高的对象定义 eventFilter(),如果有,请确保它不会“吞下”事件,以防它不响应直接事件(即在这种情况下调用BaseClass::eventFilter(obj, event))。

这解决了我的问题。

【讨论】:

以上是关于QSlider 不滑动的主要内容,如果未能解决你的问题,请参考以下文章

滑动条QSlider

QT软件开发之基础控件--2.4.9 QSlider滑块

Python Qt GUI设计:QSlider滑动条类(基础篇—16)

Python Qt GUI设计:QSlider滑动条类(基础篇—16)

PyQt5 组件之QSlider

QSlider - 如何为空间着色