QGroupBox is filled with too much space.
for some reason I can't seem to make two QTextEdits (
PublicIp) smaller. They are disproportionate.
Here's the code:
MyWindow.setWindowTitle("Start Game"); MyWindow.setCentralWidget(&MainWidget); ServerBox.setCheckable(true); ServerBox.setChecked(false); IdBox.resize(75, 20); ServerBoxLayout.addWidget(&IdLabel); ServerBoxLayout.addWidget(&IdBox); ServerBoxLayout.addWidget(&IdConnectButton); ServerBox.setLayout(&ServerBoxLayout); TheOneGrid.addWidget(&ServerBox, 0, 0); DirectLineBox.setCheckable(true); DirectLineBox.setChecked(true); IpBox.resize(75, 20); ConnectionLayout.addWidget(&IpLabel); ConnectionLayout.addWidget(&IpBox); ConnectionLayout.addWidget(&IpConnectButton); ConnectionLayout.addWidget(&HostButton); ConnectionBox.setLayout(&ConnectionLayout); LocalInfoLayout.addWidget(&LocalInfoLabel); LocalIp.resize(75, 20); LocalIp.setReadOnly(true); LocalIp.setText("a"); LocalInfoLayout.addWidget(&LocalIp); LocalInfoBox.setLayout(&LocalInfoLayout); PublicInfoLayout.addWidget(&PublicInfoLabel); PublicIp.resize(75, 20); PublicIp.setReadOnly(true); PublicIp.setText("b"); PublicInfoLayout.addWidget(&PublicIp); PublicInfoBox.setLayout(&PublicInfoLayout); DirectLineBoxLayout.addWidget(&ConnectionBox); DirectLineBoxLayout.addWidget(&LocalInfoBox); DirectLineBoxLayout.addWidget(&PublicInfoBox); DirectLineBox.setLayout(&DirectLineBoxLayout); TheOneGrid.addWidget(&DirectLineBox, 1, 0); TheOneGrid.addWidget(&HomeButton, 2, 0); MainWidget.setLayout(&TheOneGrid);
Any ideas what I'm doing wrong? Thanks in advance.
Have you tried with setMInimumHeight/Width instead of resize
as once a widget is in a layout, then the layout controls sizes.
But it respects Min/Max values.
@mrjj Thanks for your reply. I've changed
LocalIp.setMinimumHeight(20);but the result is the same I'm afraid :(
Well if you want it 20 , then
so at most 20.
you could also limit the left side to prevent it from making lower box smaller
It's better but still poorly spaced. I've tried to change the spacing of
DirectLineBoxLayoutbut the result remains the same.
oh, hmm, it divides the area (of the container) between them.
You could insert a VerticalSpacer to push them up.
@mrjj Ok but isn't there any way to actually reduce the area? Why does it have to be bigger than all the widgets together?
The area is also scaled to its container layout so that is where it get its height.
maybe QLayout::setAlignment can make it stack more to the top but
i mostly just insert a spacer.
QLayout::setAlignmentdoesn't seem to work with
DirectLineBoxLayout. I'll try to find another way.
It sometimes is very frustrating how full of bugs Qt is.
Well you can set Maximum Height on the layout to force area smaller.
It is possible to build using a widget as place holder.
Have a look at this.
Maybe a silly question but since it's for IP addresses, why not use a QLineEdit ?
QVBoxLayout::addStretch(result is unchanged) nor
QGroupBox::setMaximumHeight(result: http://i.imgur.com/FklMI9g.png) seem to work here.
I'd rather have the extra space disappear rather than add a spacer or something. The smaller the window, the better.
For the layout of your dialog, I think you should have a look at QFormLayout
@SGaist I can't use QFormLayouts because I need to display a Connect
QPushButtonas well as a Host
QPushButton. Or is there a way around this?
Well never mind, I'll just drop the IP info so that there's no more bug.
It is absurd how Qt has that many bugs. Before coding tip-top things, Qt's coders should make sure that the most basic (BASIC) things actually work. I wish I didn't have to use Qt. It is so very overrated. Sorry for that, but I'm both exasperated and disappointed. That's not the first unsolvable problem I've come across.
You would put your QLineEdit and two QPushButton in a QHorizontalLayout. QFormLayout::addRow supports also layouts.