2017-06-14 78 views
0

我在运行时创建了VerticalLayout并在其上添加了几个复选框。但是复选框在表单顶部有巨大的空白区域。我无法缩小它们之间的差距,并在顶部修剪多余的空白。如何减少Qt中的布局内部的窗口小部件之间的差距

下面是UI和CPP文件的源代码:

HideChartConfig.ui

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>HideChartConfig</class> 
<widget class="QDialog" name="HideChartConfig"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>400</width> 
    <height>559</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string></string> 
    </property> 
    <widget class="QScrollArea" name="scrollArea"> 
    <property name="geometry"> 
    <rect> 
    <x>10</x> 
    <y>10</y> 
    <width>381</width> 
    <height>471</height> 
    </rect> 
    </property> 
    <property name="widgetResizable"> 
    <bool>true</bool> 
    </property> 
    <widget class="QWidget" name="scrollAreaWidgetContents"> 
    <property name="geometry"> 
    <rect> 
     <x>0</x> 
     <y>0</y> 
     <width>379</width> 
     <height>469</height> 
    </rect> 
    </property> 
    </widget> 
    </widget> 
    <widget class="QPushButton" name="okButton"> 
    <property name="geometry"> 
    <rect> 
    <x>310</x> 
    <y>510</y> 
    <width>75</width> 
    <height>23</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>OK</string> 
    </property> 
    </widget> 
</widget> 
<layoutdefault spacing="6" margin="11"/> 
<resources/> 
<connections/> 
</ui> 

HideChartConfig的构造内部:

this->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); 
    ui->setupUi(this); 
    QPalette pal = ui->scrollArea->palette(); 
    pal.setColor(QPalette::Background, Qt::white); 
    ui->scrollArea->setPalette(pal); 

    QWidget* container = new QWidget(); 
    m_ContainerLayout = new QVBoxLayout(); 
    container->setLayout(m_ContainerLayout); 
    ui->scrollArea->setWidget(container); 

    m_ContainerLayout->addStretch(); 

    for (int i = 0; i < 3; i++) 
    { 
     QCheckBox *checkbox = new QCheckBox("Hello"); 
     m_ContainerLayout->addWidget(checkbox, 0, Qt::AlignTop); 
    } 


    m_ContainerLayout->addStretch(); 
    m_ContainerLayout->setSpacing(0); 

同样对于参考附截图:

click here to view the screenshot

我希望复选框出现在窗体的顶部,并在顶部修剪多余的空白。

任何帮助表示赞赏。提前致谢!

+0

你可以表现出你的图像想要得到。 – eyllanesc

+0

@eyllanesc:我希望复选框出现在窗体的顶部,并在顶部修剪额外的空白。 – gollusingh09

回答

1

尝试删除第一行

m_ContainerLayout->addStretch(); 

它详细介绍了顶部的空间。 (第二行给出底部的空间。)

3

您应该将垂直QSpacerItem添加到布局容器的底部,并将其设置为Expanding,这将在布局的底部使用尽可能多的空间,将其上方的所有空间推到顶部。

1

您不必创建新的QWidget,您必须使用scrollAreaWidgetContents小部件并将其作为具有最小高度的大小策略。此外,使其妥善安置您必须添加间隔:

setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); 
ui->setupUi(this); 
QPalette pal = ui->scrollArea->palette(); 
pal.setColor(QPalette::Background, Qt::white); 
ui->scrollArea->setPalette(pal); 

m_ContainerLayout = new QVBoxLayout(ui->scrollAreaWidgetContents); 
ui->scrollArea->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum); 

for (int i = 0; i < 3; i++) 
{ 
    QCheckBox *checkbox = new QCheckBox("Hello"); 
    m_ContainerLayout->addWidget(checkbox); 
} 

*的.ui

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>HideChartConfig</class> 
<widget class="QDialog" name="HideChartConfig"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>400</width> 
    <height>559</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string/> 
    </property> 
    <layout class="QVBoxLayout" name="verticalLayout"> 
    <item> 
    <widget class="QScrollArea" name="scrollArea"> 
    <property name="widgetResizable"> 
     <bool>true</bool> 
    </property> 
    <widget class="QWidget" name="scrollAreaWidgetContents"> 
     <property name="geometry"> 
     <rect> 
     <x>0</x> 
     <y>0</y> 
     <width>380</width> 
     <height>249</height> 
     </rect> 
     </property> 
    </widget> 
    </widget> 
    </item> 
    <item> 
    <spacer name="verticalSpacer"> 
    <property name="orientation"> 
     <enum>Qt::Vertical</enum> 
    </property> 
    <property name="sizeHint" stdset="0"> 
     <size> 
     <width>20</width> 
     <height>248</height> 
     </size> 
    </property> 
    </spacer> 
    </item> 
    <item> 
    <layout class="QHBoxLayout" name="horizontalLayout"> 
    <item> 
     <spacer name="horizontalSpacer"> 
     <property name="orientation"> 
     <enum>Qt::Horizontal</enum> 
     </property> 
     <property name="sizeHint" stdset="0"> 
     <size> 
     <width>40</width> 
     <height>20</height> 
     </size> 
     </property> 
     </spacer> 
    </item> 
    <item> 
     <widget class="QPushButton" name="okButton"> 
     <property name="text"> 
     <string>OK</string> 
     </property> 
     </widget> 
    </item> 
    </layout> 
    </item> 
    </layout> 
</widget> 
<layoutdefault spacing="6" margin="11"/> 
<resources/> 
<connections/> 
</ui> 

截图:

enter image description here

相关问题