]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/QT/QuadSplitter.cxx
89fc7177310637a52bb2f29129c2a42cc85bf7ee
[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, Qt::WindowFlags f )
15   : QFrame( parent, f )
16 {
17   this->m_Parent.setOrientation(Qt::Vertical);
18   this->m_Parent.addWidget(&this->m_Upper);
19   this->m_Parent.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 show( )
40 {
41   this->m_Parent.show( );
42 }
43
44 // -------------------------------------------------------------------------
45 void cpExtensions::QT::QuadSplitter::
46 addWidgets( QWidget* a, QWidget* b, QWidget* c, QWidget* d )
47 {
48   this->m_Upper.addWidget( a );
49   this->m_Upper.addWidget( b );
50   this->m_Bottom.addWidget( c );
51   this->m_Bottom.addWidget( d );
52 }
53
54 // -------------------------------------------------------------------------
55 void cpExtensions::QT::QuadSplitter::
56 _SyncBottom( int a, int b )
57 {
58   this->m_Bottom.setSizes( m_Upper.sizes( ) );
59 }
60
61 // -------------------------------------------------------------------------
62 void cpExtensions::QT::QuadSplitter::
63 _SyncUpper( int a, int b )
64 {
65   this->m_Upper.setSizes( m_Bottom.sizes( ) );
66 }
67
68 #endif // cpExtensions_Interface_QT4
69
70 // eof - $RCSfile$