def sizeHint(self, option, index): options = QStyleOptionViewItem(option) self.initStyleOption(options, index) doc = QTextDocument() doc.setHtml(options.text) doc.setTextWidth(options.rect.width()) return QSize(doc.idealWidth(), doc.size().height())
def sizeHint(self, option, index): transaction_type = index.data(Qt.DisplayRole) fontMetrics = option.fontMetrics document = QTextDocument("W") option.font.setWeight(QFont.Bold) document.setDefaultFont(option.font) w = document.idealWidth() h = fontMetrics.height() if (transaction_type == TransactionType.Dividend) or (transaction_type == TransactionType.Trade): h = h * 2 return QSize(w, h)
class DetailsDialog(QWidget): '''Dialog showing mod details''' def __init__(self, parent: QWidget, mod: Mod): super().__init__(parent) self.setWindowFlags(QtCore.Qt.Window) self.setObjectName("Details") self.resize(700, 800) self.setMinimumSize(600, 600) self.layout = QHBoxLayout(self) self.layout.setObjectName("layout") self.document = QTextDocument() self.document.setPlainText(str(mod)) self.text = QTextEdit(self) self.text.setObjectName("text") self.text.setDocument(self.document) self.text.setAutoFormatting(QTextEdit.AutoAll) self.text.setReadOnly(True) self.text.setLineWrapMode(QTextEdit.NoWrap) self.layout.addWidget(self.text) self.setWindowTitle(mod.name + " " + TRANSLATE("Details", "Details")) QtCore.QMetaObject.connectSlotsByName(self) def adjustWidth(self): '''Fits size to content''' self.resize( self.document.idealWidth() + self.text.contentsMargins().left() + self.text.contentsMargins().right() + self.contentsMargins().left() + self.contentsMargins().right() + 50, self.height()) def showEvent(self, event): '''Qt show event''' super().showEvent(event) self.adjustWidth() def keyPressEvent(self, event): '''Qt KeyPressEvent override''' if event.key() == QtCore.Qt.Key_Escape: self.close()