[PyQt] How to precisely control position/size of QDockWidgets

Andreas Pakulat apaku at gmx.de
Wed Apr 23 08:45:44 BST 2014


On Wed, Apr 23, 2014 at 12:18 AM, R Johnson (Gmail) <
ps16thypresenceisfullnessofjoy at gmail.com> wrote:

> Thank you for your helpful reply.
> QMainWindow.setCorner() does do what I wanted. I should have read the
> documentation more carefully about that, but couldn't find anything
> relevant on the QDockWidget page.
> Regarding specifying "the default width or height of the dock windows," I
> have attached another screenshot showing what I mean. The red rectangle
> shows the current width of the dock window, and the green one shows what I
> want the width to be. The default width wastes a lot of space in my layout.
> I have tried calling:
>     self.treewidget.sizeHint().setWidth(150)
> on the QTreeWidget that the dock window contains, but this has no effect.

sizeHint is just a getter for the preferred size. Its not changing the
sizeHint. The only way to change the result of the sizeHint function
directly is by subclassing and overriding sizeHint. That being said many
controls have other knobs that influence sizeHint.

> I also tried:
>     self.treewidget.resize(150, self.treewidget.height())
> but that didn't work either.
> If I make 150 pixels the maximum width of the dock window, then it is the
> width I want it, but it can't be made any wider. I don't want to make 150
> pixels the maximum (or minimum) width of the pane, just the default width.
> It also seems like the policy that I would want for QSizePolicy.setHorizontalPolicy()
> is QSizePolicy.Preferred, which is already the default one.

You could try an initial resizeColumnToContents() call which should make
column as wide as its contents are. This is of course slower if you have
lots of data. There's also ways to set the column width explicitly which
should also make the treeview smaller.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20140423/a33e6204/attachment.html>

More information about the PyQt mailing list