add details view
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
from PySide6.QtCore import QSortFilterProxyModel
|
||||
from PySide6.QtWidgets import QHBoxLayout, QWidget, QTableView, QVBoxLayout, QFormLayout, QLineEdit, QLabel
|
||||
|
||||
from .table_model import KontorTableModel
|
||||
|
||||
|
||||
class KontorTableDetailsView:
|
||||
def __init__(self, table_model: KontorTableModel):
|
||||
self._data_view: QWidget = QWidget()
|
||||
self._model = table_model
|
||||
self._label = QLabel()
|
||||
self.init_gui()
|
||||
|
||||
def init_gui(self):
|
||||
layout = QVBoxLayout()
|
||||
self._data_view.setLayout(layout)
|
||||
details_layout = QHBoxLayout()
|
||||
table_with_details = QWidget()
|
||||
table_with_details.setLayout(details_layout)
|
||||
|
||||
table_view = QTableView()
|
||||
table_view.setSelectionBehavior(QTableView.SelectionBehavior.SelectRows)
|
||||
proxy_model = QSortFilterProxyModel()
|
||||
proxy_model.setSourceModel(self._model)
|
||||
table_view.setSortingEnabled(True)
|
||||
table_view.setModel(proxy_model)
|
||||
table_view.clicked.connect(self.update_details)
|
||||
|
||||
layout.addLayout(self._model.config.get_filter_layout())
|
||||
details_layout.addWidget(table_view)
|
||||
|
||||
form = QWidget()
|
||||
form_layout = QFormLayout(form)
|
||||
form.setLayout(form_layout)
|
||||
|
||||
title = QLineEdit(form)
|
||||
form_layout.addRow("ID", self._label)
|
||||
form_layout.addRow("Title", title)
|
||||
# layout.addWidget(table_view)
|
||||
details_layout.addWidget(form)
|
||||
layout.addWidget(table_with_details)
|
||||
self._model.refresh()
|
||||
table_view.resizeColumnToContents(0)
|
||||
|
||||
@property
|
||||
def data_view(self):
|
||||
return self._data_view
|
||||
|
||||
def update_details(self, item):
|
||||
print(f"Cell {item.row()}-{item.column()} selected")
|
||||
self._model.log.info(f"Cell {item.row()}-{item.column()} selected")
|
||||
self._label.setText(self._model.raw_data()[item.row()][0])
|
||||
Reference in New Issue
Block a user