2017-10-20 3 views
0

私は複数のスライダーを含む1つの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

重複するウィジェットは良い考えではありません。同時に見えるのは1つだけです。その重複の目的は何ですか?

QWidget::setAttribute(Qt::WA_TransparentForMouseEvents)は、特定のウィジェットのマウスイベントを生成しないように設定することができます。そのため、1つのスライダだけがそのイベントを取得します。その後、そのメッセージを他のスライダーにリダイレクトすることができます。

関連する問題