[Interest] Item editor at preferred size when using custom delegate?

Elvis Stansvik elvstone at gmail.com
Fri Feb 12 15:12:17 CET 2016


2016-02-12 14:59 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
> Hi all,
>
> I have a very basic item delegate which opens up a custom editor:
>
> class MineralLevelsDelegate(QStyledItemDelegate):
>
>     def createEditor(self, parent, option, index):
>         return MineralLevelsEditor(parent)
>
>     def updateEditorGeometry(self, editor, option, index):
>         editor.setGeometry(
>             option.rect.x(), option.rect.y() + option.rect.height(),
>             editor.sizeHint().width(), editor.sizeHint().height())
>
> What you see in updateEditorGeometry(...) above is my attempt at
> making the editor show up at its preferred size (instead of being
> constrained to the cell in the QTreeView I'm using). My attempt is to
> use the editor's sizeHint() in the call to setGeometry(...).
>
> The problem seems to be that the sizeHint() or the editor is 0x0 at
> that point (has not been laid out?), and consequently the editor show
> up as a tiny little rect (see attached sizehint.png). I'm also
> attaching hardcoded.png, which shows the editor when I instead
> hardcode it to 200x100. This is kind of the look I want, but obviously
> I don't want to hardcode it to 200x100, but have it use its preferred
> size.
>
> So question is: How can I make the editor widget show up at its preferred size?

And also, to clarify: I don't want the row of the table to change size
when going into editing of an item. I just want the editor to be at
its preferred size, on top of the table rows.

Elvis

>
> Many thanks in advance.
>
> Elvis



More information about the Interest mailing list