Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to manage QSplitter in Qt Designer

When I press a button, I bring up a dialog where user select things and press 'Ok' at the end. I want a splitter in this dialog. Left pane will show tree and right will show something else. How do I do that right?

From Qt example itself:

 QSplitter *splitter = new QSplitter(parent);  QListView *listview = new QListView;  QTreeView *treeview = new QTreeView;  QTextEdit *textedit = new QTextEdit;  splitter->addWidget(listview);  splitter->addWidget(treeview);  splitter->addWidget(textedit); 

So in this example, splitter is created without any dialog resource. If I have to create this way, that would mean I have to create all my controls in the code as well rather than Qt Creator.

What is the right way to do this when I need other controls on the screen?

like image 996
zar Avatar asked Feb 03 '15 21:02

zar


People also ask

What is QSplitter?

Detailed Description. A splitter lets the user control the size of child widgets by dragging the boundary between them. Any number of widgets may be controlled by a single splitter. The typical use of a QSplitter is to create several widgets and add them using insertWidget() or addWidget().

How do I resize a layout in Qt?

Setting A Top Level Layout To check if you have set a top level layout, preview your widget and attempt to resize the window by dragging the size grip. To apply a layout, you can select your choice of layout from the toolbar shown on the left, or from the context menu shown below.

How do you overlap widgets in Qt?

Right click on the root widget (easiest in the Object Inspector), and from the bottom of context menu, select Lay out > - Lay out in Grid. Right click on the label, and from Layout alignment > set it aligned to the corner you want.

What is .UI file in Qt?

ui file is used to create a ui_calculatorform. h file that can be used by any file listed in the SOURCES declaration. Note: You can use Qt Creator to create the Calculator Form project. It automatically generates the main.


2 Answers

You can simply create splitter containing items in Qt Designer :

  1. First place your widgets on your dialog or widget in designer (They should not be in a layout)

  2. Select the widgets that you want to be in a splitter (By holding CTL and clicking on them)

  3. Right click on a selected widget and from Layout menu select Lay Out Horizontally in Splitter or Lay Out Vertically in Splitter.

  4. Now apply a grid layout to the dialog and everything should be OK. You would see something like this in Object Inspector View :

enter image description here

like image 84
Nejat Avatar answered Sep 28 '22 04:09

Nejat


Okay, I know this is ancient, but here's the complete answer.

First, within some sort of widget container, plop your pieces in. For the window I just did, I have a Widget as my window. I put two widgets inside that labeled something like topContainer and bottomContainer. I then put all the widgets they each need into them, and gave them their own layouts.

Then do NOT select the main container. Select the two widgets you want to split. You're in effect putting a splitter on them, not on the main container. So I went to the widget list window and selected both together, then right-click for the dialog window, scroll down to the Layout option, and "Lay Out Vertically in a Splitter" is NOT greyed out. Select it.

You still need a layout on the main container. A splitter is not a layout. So at that point, I just put a vertical layout on the main container.

To repeat: you are NOT setting a layout on the container holding the pieces you're trying to split. You are selecting the two widgets to split and adding a QSplitter around them. That's the trick to get it to work.

like image 35
Joseph Larson Avatar answered Sep 28 '22 06:09

Joseph Larson