我有一个包含多个滑块的QWidget。所有滑块都调整为主QWidget大小。因此,所有滑块共享相同的绘制矩形。对于滑块我超载paintEvent
方法,因此它只绘制所需的东西。这是一个示例代码:
class MySlider : public QSlider
{
void paintEvent(QPaintEvent *event) {
...
}
}
class MyWidget : public QWidget
{
MyWidget() : QWidget() {
slider1 = new MySlider(this);
slider2 = new MySlider(this);
slider1->resize(rect().width(), rect().height());
slider2->resize(rect().width(), rect().height());
}
MySlider * slider1;
MySlider * slider2;
}
ADSF
这个解决方案没有看到Groove(因为我们没有调用QSlider :: paintEvent),但它仍然存在。对于此小部件,可以仅使用最后创建的滑块(slider2
)。其余部分是可见的,但它们不可用。
是否可以相互叠加多个小部件,并且仍然能够通过鼠标事件访问所有小部件?
答案 0 :(得分:0)
重叠小部件不是一个好主意,期望只有一个同时可见。重叠的目的是什么?
您可以将QWidget::setAttribute(Qt::WA_TransparentForMouseEvents)
设置为不为该特定小部件生成任何鼠标事件,以便只有一个滑块可以获取该事件。然后,您可以将该消息重定向到其他滑块。