]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/QT/QuadSplitter.cxx
merge async example
[cpPlugins.git] / lib / cpExtensions / QT / QuadSplitter.cxx
1 #include <cpExtensions/QT/QuadSplitter.h>
2
3 #include <cpExtensions/Config.h>
4
5 #ifdef cpExtensions_Interface_QT4
6
7 /**
8  * Inspired by:
9  * https://forum.qt.io/topic/7144/quad-splitter-windows-an-implementation/2
10  */
11
12 // -------------------------------------------------------------------------
13 cpExtensions::QT::QuadSplitter::
14 QuadSplitter( QWidget* parent )
15   : QSplitter( parent )
16 {
17   this->setOrientation( Qt::Vertical );
18   this->addWidget( &this->m_Upper );
19   this->addWidget( &this->m_Bottom );
20
21   QObject::connect(
22     &( this->m_Upper ), SIGNAL( splitterMoved( int, int ) ),
23     this, SLOT( _SyncBottom( int, int ) )
24     );
25   QObject::connect(
26     &( this->m_Bottom ), SIGNAL( splitterMoved( int, int ) ),
27     this, SLOT( _SyncUpper( int, int ) )
28     );
29 }
30
31 // -------------------------------------------------------------------------
32 cpExtensions::QT::QuadSplitter::
33 ~QuadSplitter( )
34 {
35 }
36
37 // -------------------------------------------------------------------------
38 void cpExtensions::QT::QuadSplitter::
39 addWidgets( QWidget* a, QWidget* b, QWidget* c, QWidget* d )
40 {
41   this->m_Upper.addWidget( a );
42   this->m_Upper.addWidget( b );
43   this->m_Bottom.addWidget( c );
44   this->m_Bottom.addWidget( d );
45 }
46
47 // -------------------------------------------------------------------------
48 void cpExtensions::QT::QuadSplitter::
49 _SyncBottom( int a, int b )
50 {
51   this->m_Bottom.setSizes( this->m_Upper.sizes( ) );
52 }
53
54 // -------------------------------------------------------------------------
55 void cpExtensions::QT::QuadSplitter::
56 _SyncUpper( int a, int b )
57 {
58   this->m_Upper.setSizes( this->m_Bottom.sizes( ) );
59 }
60
61 #endif // cpExtensions_Interface_QT4
62
63 // eof - $RCSfile$