Dear Mads, Am Mittwoch, 9. Januar 2013, 15:56:29 schrieb Mads Ipsen: > Hi, > > 4-5 years I needed a widget with the following properties: > > * Display text incl. HTML > * Text should be wrapped on several lines > * When the widget is put into a layout, the height of the widget > should be adjusted in such a way that the text exactly fits the > widget geometry > > This subwidget should be used in a layout to provide some detail on how > the other GUI elements in the layout work but only consume a minimum > space to display its content. > > I thought this was an easy one - but each time I return to the challenge > I always end by giving up. > > The main problem is that the layout breaks down when heightForWidth() is > implemented and a QSizePolicy with setHeightForWidth(True) is used. It > can shrink to infinitely small. Apparently this is Qt bug.
Yes, been there, done that, and failed in similar ways. The best thing I could come up on this was: use a QTextBrowser for the text: self.aboutText.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.aboutText.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.aboutText.setLineWrapMode(QtGui.QTextEdit.NoWrap) self.aboutText.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) self.aboutText.setHtml("...") w = self.aboutText.document().idealWidth() self.aboutText.document().setTextWidth(w) ds = self.aboutText.document().size() self.aboutText.setMinimumSize(int(ds.width() + 3), int(ds.height() + 3)) self.aboutText.updateGeometry() self.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize) with this, you can even provide clickable links (but disable openLinks prop): @QtCore.pyqtSignature("const QUrl &") def on_aboutText_anchorClicked(self, url): QtGui.QDesktopServices.openUrl(url) Maybe it gets you going.. Cheers, Pete _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt