How to precisely control position/size of QDockWidgets

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How to precisely control position/size of QDockWidgets

ps16thypresenceisfullnessofjoy@gmail.com
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.

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.

I'm still confused about this. How can I tell Qt the default width (or
"best size", in wxPython terms) of this dock window?

Thank you.

-- Timothy


_______________________________________________
PyQt mailing list    [hidden email]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

PyQt dock window.png (35K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to precisely control position/size of QDockWidgets

Andreas Pakulat
Hi,

On Wed, Apr 23, 2014 at 12:18 AM, R Johnson (Gmail) <[hidden email]> 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.

Andreas

_______________________________________________
PyQt mailing list    [hidden email]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt