覆盖多个小部件

时间:2017-10-20 07:32:55

标签: c++ qt

我有一个包含多个滑块的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)。其余部分是可见的,但它们不可用。

是否可以相互叠加多个小部件,并且仍然能够通过鼠标事件访问所有小部件?

1 个答案:

答案 0 :(得分:0)

重叠小部件不是一个好主意,期望只有一个同时可见。重叠的目的是什么?

您可以将QWidget::setAttribute(Qt::WA_TransparentForMouseEvents)设置为不为该特定小部件生成任何鼠标事件,以便只有一个滑块可以获取该事件。然后,您可以将该消息重定向到其他滑块。