OpendTect  6.6
i_qtableview.h
Go to the documentation of this file.
1 #ifndef i_qtableview_h
2 #define i_qtableview_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: Nanne Hemstra
9  Date: August 2020
10 ________________________________________________________________________
11 
12  Inspired by Qt's Frozen Column Example
13  https://doc.qt.io/qt-5/qtwidgets-itemviews-frozencolumn-example.html
14 -*/
15 
16 #include <QTableView>
17 #include <QScrollBar>
18 #include <QHeaderView>
19 
20 QT_BEGIN_NAMESPACE
21 
22 class FrozenColumnsHelper : public QObject
23 {
24  Q_OBJECT
25  friend class ODTableView;
26 
27 protected:
28 FrozenColumnsHelper( QTableView* mainview, QTableView* frozenview )
29  : mainview_(mainview)
30  , frozenview_(frozenview)
31  , nrcols_(1)
32 {
33  connect( mainview_->horizontalHeader(), &QHeaderView::sectionResized,
35  connect( mainview_->verticalHeader(), &QHeaderView::sectionResized,
37 
38  connect( frozenview_->verticalScrollBar(), &QAbstractSlider::valueChanged,
39  mainview_->verticalScrollBar(), &QAbstractSlider::setValue );
40  connect( mainview_->verticalScrollBar(), &QAbstractSlider::valueChanged,
41  frozenview_->verticalScrollBar(), &QAbstractSlider::setValue );
42 }
43 
44 
45 void setNrColumns( int nrcol )
46 { nrcols_ = nrcol; }
47 
48 
49 void updateGeom()
50 {
51  const int posx =
52  mainview_->verticalHeader()->width() + mainview_->frameWidth();
53  const int posy = mainview_->frameWidth();
54  int viewwidth = 0;
55  for ( int col=0; col<nrcols_; col++ )
56  viewwidth += mainview_->columnWidth( col );
57 
58  const int viewheight = mainview_->viewport()->height() +
59  mainview_->horizontalHeader()->height();
60  frozenview_->setGeometry( posx, posy, viewwidth-1, viewheight );
61 }
62 
63  QTableView* mainview_; // main table
64  QTableView* frozenview_; // frozen column(s)
65  int nrcols_; // nr of frozen columns
66 
67 private slots:
68 void columnResized( int col, int oldwidth, int newwidth )
69 {
70  if ( col >= nrcols_ )
71  return;
72 
73  frozenview_->setColumnWidth( col, newwidth );
74  updateGeom();
75 }
76 
77 
78 void rowResized( int row, int oldheight, int newheight )
79 {
80  frozenview_->setRowHeight( row, newheight );
81 }
82 
83 };
84 
85 #endif
FrozenColumnsHelper::ODTableView
friend class ODTableView
Definition: i_qtableview.h:25
FrozenColumnsHelper::setNrColumns
void setNrColumns(int nrcol)
Definition: i_qtableview.h:45
FrozenColumnsHelper::columnResized
void columnResized(int col, int oldwidth, int newwidth)
Definition: i_qtableview.h:68
FrozenColumnsHelper::rowResized
void rowResized(int row, int oldheight, int newheight)
Definition: i_qtableview.h:78
FrozenColumnsHelper::updateGeom
void updateGeom()
Definition: i_qtableview.h:49
FrozenColumnsHelper::FrozenColumnsHelper
FrozenColumnsHelper(QTableView *mainview, QTableView *frozenview)
Definition: i_qtableview.h:28
FrozenColumnsHelper::nrcols_
int nrcols_
Definition: i_qtableview.h:65
FrozenColumnsHelper
Definition: i_qtableview.h:23
FrozenColumnsHelper::frozenview_
QTableView * frozenview_
Definition: i_qtableview.h:64
FrozenColumnsHelper::mainview_
QTableView * mainview_
Definition: i_qtableview.h:63

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021