diff --git a/soitool/modules/module_code_phrase.py b/soitool/modules/module_code_phrase.py index 836e16735c9438604a2805082f9f8303e832a234..09cdd7646ea0649958cf8d8cf8bc49b169fc7cb6 100644 --- a/soitool/modules/module_code_phrase.py +++ b/soitool/modules/module_code_phrase.py @@ -52,12 +52,16 @@ class TableWithSizeOfContent(QTableWidget): QHeaderView.ResizeMode.ResizeToContents ) + # TODO this would be ideal, but it massively increases the width of the thing... should only stretch until minimal sizehint of lineedit + # TODO hvis ikke kan løse, fjern border til høyre på siste kolonne :) (celle) + #self.horizontalHeader().setStretchLastSection(True) + self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) # Tells Qt that we'd like the widget to be the one given by # self.sizeHint - self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) # See class docstring self.cellChanged.connect( @@ -175,8 +179,18 @@ class CodePhraseModule(QWidget): QWidget.__init__(self) ModuleBase.__init__(self) + self.line_edit_header = LineEditWithSizeOfContent("Kodefraser") + self.line_edit_header.setFont(HEADLINE_FONT) self.table = TableWithSizeOfContent(0, 2) + self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + + # See class docstring + self.line_edit_header.textChanged.connect(lambda : (self.line_edit_header.updateGeometry(), self.adjustSize())) + self.table.cellChanged.connect( + lambda: self.adjustSize() + ) + self.database = database self.category = self.get_category() @@ -191,14 +205,11 @@ class CodePhraseModule(QWidget): # than one row self.add_row() - # See class docstring - self.table.cellChanged.connect( - lambda: (self.adjustSize()) - ) self.layout = QVBoxLayout() self.layout.setSpacing(0) self.layout.setMargin(0) + self.layout.addWidget(self.line_edit_header) self.layout.addWidget(self.table) self.setLayout(self.layout) diff --git a/soitool/modules/module_freetext.py b/soitool/modules/module_freetext.py index 95066bceea66e73d73013f3b930fecd92ef1484d..6448ce57e91976044fde36b65928bacdc01ce3a0 100644 --- a/soitool/modules/module_freetext.py +++ b/soitool/modules/module_freetext.py @@ -29,11 +29,7 @@ class TextEditWithSizeOfContent(QTextEdit): def sizeHint(self): """Give size hint using width of text.""" - size = QSize(self.document().size().toSize()) - # NOTE that the following is not respected for dimensions below 100,100 - size.setWidth(max(100, size.width())) - size.setHeight(max(100, size.height())) - return size + return QSize(self.document().size().toSize()) def resizeEvent(self, event): """Update geometry before handling the resizeEvent. @@ -67,18 +63,20 @@ class LineEditWithSizeOfContent(QLineEdit): content_width += 10 return QSize(content_width, size_hint_parent.height()) - def resizeEvent(self, event): - """Update geometry before handling the resizeEvent. + def minimumSizeHint(self): + """Overriden to set the minimal size as the size hint. - See sources in module docstring. + Override of https://doc.qt.io/qt-5/qwidget.html#minimumSize-prop + because we are unable to `self.setMinimalSize` to a size under 87,87. + Not sure why, but simply returning our sizeHint is a valid workaround, + since we would be setting self.minimalSize to this anyway. - Parameters - ---------- - event : QResizeEvent - event sent by Qt + Returns + ------- + QSize + The minimal size for this widget """ - self.updateGeometry() - super(LineEditWithSizeOfContent, self).resizeEvent(event) + return self.sizeHint() class Meta(type(ModuleBase), type(QWidget)): @@ -119,7 +117,7 @@ class FreeTextModule(ModuleBase, QWidget, metaclass=Meta): # widget will leave behind gray color when it is shrunk in the # QGraphicsScene self.line_edit_header.textChanged.connect( - lambda: (self.line_edit_header.adjustSize(), self.adjustSize()) + lambda: (self.line_edit_header.updateGeometry(), self.adjustSize()) ) self.text_edit_body.textChanged.connect( lambda: (self.text_edit_body.adjustSize(), self.adjustSize())