2017-10-20 85 views
0

我有一个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

槽未用此溶液看到(因为我们不叫QSlider ::的paintEvent),但它仍然存在。对于这个小工具,可以只使用最后创建的滑块(slider2)。其余的都是可见的,但它们不可用。

是否有可能在覆盖多个彼此部件,仍然能够访问所有的人都用鼠标事件?

回答

0

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

您可以设置QWidget::setAttribute(Qt::WA_TransparentForMouseEvents)不生成针对特定部件的任何鼠标事件,以便只有一个滑块将得到的事件。然后,您可以重定向邮件到您的其他滑块。