Use PgLabItemDelegate for rendering the table QTreeView

This commit is contained in:
eelke 2023-01-22 19:28:08 +01:00
parent abc0dd892f
commit 7728417392
2 changed files with 20 additions and 9 deletions

View file

@ -135,7 +135,7 @@ void PgLabItemDelegate::initStyleOption(QStyleOptionViewItem *option,
suffix = "B"; suffix = "B";
forground_color = QColorConstants::Svg::darkblue; forground_color = QColorConstants::Svg::darkblue;
} }
option->text = QString{ "%1 %2" }.arg(val, 3, 'g', -1 ).arg(suffix) ; option->text = QString{ "%1 %2" }.arg(val, 0, 'g', 3).arg(suffix) ;
} }
else { else {
auto str = value.toString(); auto str = value.toString();

View file

@ -3,6 +3,7 @@
#include <QTableWidget> #include <QTableWidget>
#include <QTreeView> #include <QTreeView>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
#include "util/PgLabItemDelegate.h"
#include "util/PgLabTableView.h" #include "util/PgLabTableView.h"
#include <optional> #include <optional>
@ -19,7 +20,17 @@ inline void ResizeColumnsToContent<QTreeView>(QTreeView *)
{ {
} }
template <typename ViewType>
void InitView(ViewType *vt)
{}
template <>
inline void InitView<QTreeView>(QTreeView *tv)
{
tv->setAlternatingRowColors(true);
tv->setItemDelegate(new PgLabItemDelegate(tv));
tv->setWordWrap(false);
}
template <typename TableModel, typename ViewType = PgLabTableView> template <typename TableModel, typename ViewType = PgLabTableView>
@ -28,13 +39,13 @@ public:
PgLabTableViewHelper(QWidget * parent, TableModel *tableModel) PgLabTableViewHelper(QWidget * parent, TableModel *tableModel)
{ {
m_tableView = new ViewType(parent); m_itemView = new ViewType(parent);
InitView(m_itemView);
m_dataModel = tableModel; m_dataModel = tableModel;
m_sortFilter = new QSortFilterProxyModel(parent); m_sortFilter = new QSortFilterProxyModel(parent);
m_sortFilter->setSourceModel(m_dataModel); m_sortFilter->setSourceModel(m_dataModel);
m_tableView->setModel(m_sortFilter); m_itemView->setModel(m_sortFilter);
m_tableView->setSortingEnabled(true); m_itemView->setSortingEnabled(true);
m_sortFilter->sort(0, Qt::AscendingOrder); m_sortFilter->sort(0, Qt::AscendingOrder);
} }
@ -44,7 +55,7 @@ public:
ViewType *itemView() const ViewType *itemView() const
{ {
return m_tableView; return m_itemView;
} }
TableModel *dataModel() const TableModel *dataModel() const
@ -60,12 +71,12 @@ public:
void setCatalog(std::shared_ptr<PgDatabaseCatalog> cat) void setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
{ {
m_dataModel->setCatalog(cat); m_dataModel->setCatalog(cat);
ResizeColumnsToContent(m_tableView); ResizeColumnsToContent(m_itemView);
} }
QModelIndex currentSourceIndex() const QModelIndex currentSourceIndex() const
{ {
QModelIndex index = m_tableView->selectionModel()->currentIndex(); QModelIndex index = m_itemView->selectionModel()->currentIndex();
if (!index.isValid()) if (!index.isValid())
return index; return index;
@ -99,7 +110,7 @@ public:
private: private:
ViewType *m_tableView = nullptr; ViewType *m_itemView = nullptr;
TableModel *m_dataModel = nullptr; TableModel *m_dataModel = nullptr;
QSortFilterProxyModel *m_sortFilter = nullptr; QSortFilterProxyModel *m_sortFilter = nullptr;
}; };