Introduced own version of QTableView called PgLabTableView that has some other defaults.

This commit is contained in:
eelke 2018-12-29 17:54:54 +01:00
parent f0ffcf4abd
commit f6ea2ce0a6
9 changed files with 42 additions and 32 deletions

View file

@ -1,7 +1,7 @@
#include "ColumnPage.h" #include "ColumnPage.h"
#include "ResultTableModelUtil.h" #include "ResultTableModelUtil.h"
#include "UserConfiguration.h" #include "UserConfiguration.h"
#include <QTableView> #include "PgLabTableView.h"
#include "catalog/PgClass.h" #include "catalog/PgClass.h"
#include "SqlCodePreview.h" #include "SqlCodePreview.h"
#include "ColumnTableModel.h" #include "ColumnTableModel.h"
@ -15,13 +15,11 @@
ColumnPage::ColumnPage(QWidget *parent) ColumnPage::ColumnPage(QWidget *parent)
: QSplitter(Qt::Vertical, parent) : QSplitter(Qt::Vertical, parent)
{ {
m_tableView = new QTableView(this); m_tableView = new PgLabTableView(this);
m_definitionView = new SqlCodePreview(this); m_definitionView = new SqlCodePreview(this);
addWidget(m_tableView); addWidget(m_tableView);
addWidget(m_definitionView); addWidget(m_definitionView);
SetTableViewDefault(m_tableView);
m_columnModel = new ColumnTableModel(this); m_columnModel = new ColumnTableModel(this);
m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy = new CustomFilterSortModel(this);
m_sortFilterProxy->setSourceModel(m_columnModel); m_sortFilterProxy->setSourceModel(m_columnModel);
@ -30,12 +28,6 @@ ColumnPage::ColumnPage(QWidget *parent)
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
m_sortFilterProxy->sort(ColumnTableModel::AttnumCol, Qt::AscendingOrder); m_sortFilterProxy->sort(ColumnTableModel::AttnumCol, Qt::AscendingOrder);
// With this delegate the coloring of the datatype column doesn't work....
// auto item_delegate = new PgLabItemDelegate(this);
// m_tableView->setItemDelegate(item_delegate);
//auto icon_delegate = new IconColumnDelegate(this);
connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged, connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &ColumnPage::tableView_selectionChanged); this, &ColumnPage::tableView_selectionChanged);
} }

View file

@ -7,7 +7,7 @@
#include <optional> #include <optional>
class QTableView; class PgLabTableView;
class SqlCodePreview; class SqlCodePreview;
class PgDatabaseCatalog; class PgDatabaseCatalog;
class ColumnTableModel; class ColumnTableModel;
@ -28,7 +28,7 @@ signals:
public slots: public slots:
private: private:
QTableView *m_tableView = nullptr; PgLabTableView *m_tableView = nullptr;
SqlCodePreview *m_definitionView = nullptr; SqlCodePreview *m_definitionView = nullptr;
ColumnTableModel *m_columnModel = nullptr; ColumnTableModel *m_columnModel = nullptr;
CustomFilterSortModel *m_sortFilterProxy = nullptr; CustomFilterSortModel *m_sortFilterProxy = nullptr;

View file

@ -6,7 +6,7 @@
#include "ProcTableModel.h" #include "ProcTableModel.h"
#include "SqlCodePreview.h" #include "SqlCodePreview.h"
#include <QApplication> #include <QApplication>
#include <QTableView> #include "PgLabTableView.h"
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QTabWidget> #include <QTabWidget>
@ -14,7 +14,7 @@ FunctionsPage::FunctionsPage(QWidget *parent)
: QSplitter(Qt::Horizontal, parent) : QSplitter(Qt::Horizontal, parent)
{ {
// create widgets // create widgets
m_functionTable = new QTableView(this); m_functionTable = new PgLabTableView(this);
m_detailTabs = new QTabWidget(this); m_detailTabs = new QTabWidget(this);
m_definitionView = new SqlCodePreview(this); m_definitionView = new SqlCodePreview(this);
@ -31,8 +31,6 @@ FunctionsPage::FunctionsPage(QWidget *parent)
// setLayout(mainLayout); // setLayout(mainLayout);
// Do further initialization of widgets and models // Do further initialization of widgets and models
SetTableViewDefault(m_functionTable);
m_model = new ProcTableModel(this); m_model = new ProcTableModel(this);
m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy = new CustomFilterSortModel(this);
m_sortFilterProxy->setSourceModel(m_model); m_sortFilterProxy->setSourceModel(m_model);
@ -40,9 +38,6 @@ FunctionsPage::FunctionsPage(QWidget *parent)
m_functionTable->setSortingEnabled(true); m_functionTable->setSortingEnabled(true);
m_functionTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_functionTable->setSelectionBehavior(QAbstractItemView::SelectRows);
auto item_delegate = new PgLabItemDelegate(this);
m_functionTable->setItemDelegate(item_delegate);
connect(m_functionTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, connect(m_functionTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
&FunctionsPage::functionTable_currentRowChanged); &FunctionsPage::functionTable_currentRowChanged);

View file

@ -5,7 +5,7 @@
#include <memory> #include <memory>
#include <optional> #include <optional>
class QTableView; class PgLabTableView;
class PgDatabaseCatalog; class PgDatabaseCatalog;
class ProcTableModel; class ProcTableModel;
class CustomFilterSortModel; class CustomFilterSortModel;
@ -25,7 +25,7 @@ public slots:
void functionTable_currentRowChanged(const QModelIndex &current, const QModelIndex &previous); void functionTable_currentRowChanged(const QModelIndex &current, const QModelIndex &previous);
private: private:
QTableView *m_functionTable = nullptr; PgLabTableView *m_functionTable = nullptr;
QTabWidget *m_detailTabs = nullptr; QTabWidget *m_detailTabs = nullptr;
SqlCodePreview *m_definitionView = nullptr; SqlCodePreview *m_definitionView = nullptr;
ProcTableModel *m_model = nullptr; ProcTableModel *m_model = nullptr;

14
pglab/PgLabTableView.cpp Normal file
View file

@ -0,0 +1,14 @@
#include "PgLabTableView.h"
#include "PgLabItemDelegate.h"
#include <QHeaderView>
PgLabTableView::PgLabTableView(QWidget *parent)
: QTableView(parent)
{
setAlternatingRowColors(true);
setItemDelegate(new PgLabItemDelegate(this));
auto vertical_header = verticalHeader();
vertical_header->setMinimumSectionSize(16);
vertical_header->setDefaultSectionSize(20);
}

12
pglab/PgLabTableView.h Normal file
View file

@ -0,0 +1,12 @@
#ifndef PGLABTABLEVIEW_H
#define PGLABTABLEVIEW_H
#include <QTableView>
class PgLabTableView : public QTableView {
Q_OBJECT
public:
explicit PgLabTableView(QWidget *parent = nullptr);
};
#endif // PGLABTABLEVIEW_H

View file

@ -5,11 +5,11 @@
#include "PgLabItemDelegate.h" #include "PgLabItemDelegate.h"
#include "SequenceModel.h" #include "SequenceModel.h"
#include "SqlCodePreview.h" #include "SqlCodePreview.h"
#include <QTableView> #include "PgLabTableView.h"
SequencesPage::SequencesPage(QWidget *parent) SequencesPage::SequencesPage(QWidget *parent)
{ {
m_sequenceTable = new QTableView(this); m_sequenceTable = new PgLabTableView(this);
m_definitionView = new SqlCodePreview(this); m_definitionView = new SqlCodePreview(this);
// build widget tree // build widget tree
@ -17,8 +17,6 @@ SequencesPage::SequencesPage(QWidget *parent)
addWidget(m_sequenceTable); addWidget(m_sequenceTable);
addWidget(m_definitionView); addWidget(m_definitionView);
SetTableViewDefault(m_sequenceTable);
m_model = new SequenceModel(this); m_model = new SequenceModel(this);
m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy = new CustomFilterSortModel(this);
m_sortFilterProxy->setSourceModel(m_model); m_sortFilterProxy->setSourceModel(m_model);
@ -26,9 +24,6 @@ SequencesPage::SequencesPage(QWidget *parent)
m_sequenceTable->setSortingEnabled(true); m_sequenceTable->setSortingEnabled(true);
m_sequenceTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_sequenceTable->setSelectionBehavior(QAbstractItemView::SelectRows);
auto item_delegate = new PgLabItemDelegate(this);
m_sequenceTable->setItemDelegate(item_delegate);
connect(m_sequenceTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, connect(m_sequenceTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
&SequencesPage::sequenceTable_currentRowChanged); &SequencesPage::sequenceTable_currentRowChanged);

View file

@ -5,7 +5,7 @@
#include <memory> #include <memory>
#include <optional> #include <optional>
class QTableView; class PgLabTableView;
class PgDatabaseCatalog; class PgDatabaseCatalog;
class SequenceModel; class SequenceModel;
class CustomFilterSortModel; class CustomFilterSortModel;
@ -25,7 +25,7 @@ public slots:
void sequenceTable_currentRowChanged(const QModelIndex &current, const QModelIndex &previous); void sequenceTable_currentRowChanged(const QModelIndex &current, const QModelIndex &previous);
private: private:
QTableView *m_sequenceTable = nullptr; PgLabTableView *m_sequenceTable = nullptr;
//QTabWidget *m_detailTabs = nullptr; //QTabWidget *m_detailTabs = nullptr;
SqlCodePreview *m_definitionView = nullptr; SqlCodePreview *m_definitionView = nullptr;
SequenceModel *m_model = nullptr; SequenceModel *m_model = nullptr;

View file

@ -83,7 +83,8 @@ PropertyProxyModel.cpp \
EditColumnTableModel.cpp \ EditColumnTableModel.cpp \
SequenceModel.cpp \ SequenceModel.cpp \
SequencesPage.cpp \ SequencesPage.cpp \
DatabaseWindow.cpp DatabaseWindow.cpp \
PgLabTableView.cpp
HEADERS += \ HEADERS += \
QueryResultModel.h \ QueryResultModel.h \
@ -144,7 +145,8 @@ CustomDataRole.h \
EditColumnTableModel.h \ EditColumnTableModel.h \
SequenceModel.h \ SequenceModel.h \
SequencesPage.h \ SequencesPage.h \
DatabaseWindow.h DatabaseWindow.h \
PgLabTableView.h
FORMS += mainwindow.ui \ FORMS += mainwindow.ui \
ConnectionManagerWindow.ui \ ConnectionManagerWindow.ui \