Results 1 to 19 of 19

Thread: Main Window frame height

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    6,264
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60 Maemo/MeeGo
    Thanks
    36
    Thanked 1,519 Times in 1,389 Posts

    Default Re: Main Window frame height

    Did you apply a top level layout? Unselect child widgets, open up context menu over the background of the form and select a layout. See this thread for a screenshot: http://www.qtcentre.org/forum/f-qt-d...lved-9897.html
    J-P Nurmi

  2. #2
    Join Date
    Jan 2006
    Location
    Sta. Eugènia de Berga (Vic - Barcelona - Spain)
    Posts
    869
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    70
    Thanked 59 Times in 57 Posts

    Default Re: Main Window frame height

    Hi,

    Did you apply a top level layout?
    Sorry, I didn't said that I have a QGridLayout (all the code is handwritten). And I don't do it with Designer because the number of columns and rows of windows(like OpenGL widgets) can be modified.

    Thanks for replies, but it works using
    Qt Code:
    1. int height = window->style()->pixelMetric(QStyle::PM_TitleBarHeight);
    To copy to clipboard, switch view to plain text mode 
    as you told me.

    Next time I will try to try using size policies.

    Thanks,
    Òscar Llarch i Galán

  3. #3
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    6,264
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60 Maemo/MeeGo
    Thanks
    36
    Thanked 1,519 Times in 1,389 Posts

    Default Re: Main Window frame height

    Well, if you insist doing it wrong, I suggest you at least take a look at Window Geometry documentation. There is no need to query window's title height when placing its child widgets. You just have to choose proper methods which exclude window frame.
    J-P Nurmi

  4. #4
    Join Date
    Jan 2006
    Location
    Sta. Eugènia de Berga (Vic - Barcelona - Spain)
    Posts
    869
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    70
    Thanked 59 Times in 57 Posts

    Default Re: Main Window frame height

    Hi,

    Well, or I don't explain it well or you don't understood me.
    Do you really think that I'm doing it wrong? Wich is the good way? I'm not able to make sizePolicies work well (expanded and maximum don't expand the centreal widget to avaiable space).

    Thanks,
    Òscar Llarch i Galán

  5. #5
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,376
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Thanks
    4
    Thanked 5,019 Times in 4,795 Posts
    Wiki edits
    10

    Default Re: Main Window frame height

    If you set a widget using QMainWindow::setCentralWidget, the main window will handle resizing the widget to fit the window contents. If it doesn't happen, it means that the widget you set for the central widget doesn't have a layout applied. If you apply the layout, it will work out of the box. Consider the following code:

    Qt Code:
    1. int main(int argc, char **argv){
    2. QApplication app(argc, argv);
    3. QWidget *w = new QWidget;
    4. QVBoxLayout *l = new QVBoxLayout(w); // *
    5. for(int i=0;i<5;i++){
    6. QTextEdit *te = new QTextEdit(w);
    7. // te->setGeometry(0, i*40, 200, 35); // %
    8. l->addWidget(te); // *
    9. }
    10. mw.setCentralWidget(w);
    11. mw.show();
    12. return app.exec();
    13. }
    To copy to clipboard, switch view to plain text mode 

    Try it and then comment out lines that are marked with asterisks and remove the comment from the line marked with the percent sign and try again, you'll see the difference while resizing.

  6. #6
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    6,264
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60 Maemo/MeeGo
    Thanks
    36
    Thanked 1,519 Times in 1,389 Posts

    Default Re: Main Window frame height

    Quote Originally Posted by ^NyAw^ View Post
    Do you really think that I'm doing it wrong? Wich is the good way?
    Unfortunately, yes I do. A good way is to rely on layouts and not to manually position children upon resize event. If you ever decide for example to change language or font, manually resized children will fail miserably. Layouts will take care of not only resize event but also a lot of other situations when geometries need to be managed.

    I'm not able to make sizePolicies work well (expanded and maximum don't expand the centreal widget to avaiable space).
    It's not about size policies it the layout management doesn't work at all. Size policies and stretch factors are ways to fine tune after you get layout managers properly installed and working. Either you didn't set the central widget with QMainWindow::setCentralWidget() or the central widget itself has no layout installed.
    J-P Nurmi

  7. #7
    Join Date
    Jan 2006
    Location
    Sta. Eugènia de Berga (Vic - Barcelona - Spain)
    Posts
    869
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    70
    Thanked 59 Times in 57 Posts

    Default Re: Main Window frame height

    Hi,

    mmm...
    I have a centralWidget that have a QGridLayout manager.

    You know that when you resize Docks, remove or insert ToolBars, ... the space that centralWidget has is changed. Ok, so I only want that the centralWidget size is the corresponding size, not to ScrollBars apear.
    Think that I have 4 OpenGL widgets and I want that have to be full visible, so them have to be resized when Docks are resized.

    Thanks,
    Òscar Llarch i Galán

  8. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,376
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Thanks
    4
    Thanked 5,019 Times in 4,795 Posts
    Wiki edits
    10

    Default Re: Main Window frame height

    It's all doable using size policies. Child widgets should have the policy set to Maximum or Preferred and it should work. Check out the code I gave you - the text edits adjust their size according to the size of the main window's central widget. You may only get scroll bars if you use a scroll area - get rid of it and the problem might go away.

  9. #9
    Join Date
    Jan 2006
    Location
    Sta. Eugènia de Berga (Vic - Barcelona - Spain)
    Posts
    869
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    70
    Thanked 59 Times in 57 Posts

    Default Re: Main Window frame height

    Hi,

    You may only get scroll bars if you use a scroll area
    Thanks, this was the problem. I removed the ScrollArea and now the centralWidget is resized to the maximum avaiable space.

    Thanks,
    Òscar Llarch i Galán

  10. #10
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,376
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Thanks
    4
    Thanked 5,019 Times in 4,795 Posts
    Wiki edits
    10

    Default Re: Main Window frame height

    It would probably also worked if you had called setWidgetResizable(true) on the scroll area.

  11. The following user says thank you to wysota for this useful post:

    ^NyAw^ (13th November 2007)

Similar Threads

  1. Background image for main window widget using css.
    By Enygma in forum Qt Programming
    Replies: 8
    Last Post: 23rd August 2007, 16:40
  2. Replies: 15
    Last Post: 23rd March 2007, 17:16
  3. move parent window to the front.
    By hvengel in forum Qt Programming
    Replies: 4
    Last Post: 2nd February 2007, 09:41
  4. Replies: 5
    Last Post: 5th August 2006, 00:44
  5. cannot make a main window modal
    By Dark_Tower in forum Qt Programming
    Replies: 12
    Last Post: 23rd March 2006, 11:21

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.