QMainWindow中的QT 4.8填充

Iva*_*van 4 c++ qt qmainwindow qt4.8

我开始学习QT了.当我创建一个MainWindow并在其布局中放置一些小部件时,窗口边缘和小部件之间存在间隙,如下所示:

在此输入图像描述

我怎样才能关掉这个空白呢?

layout()->setContentsMargins(0,0,0,0); 和编辑窗口的样式表,但没有效果.我该怎么办?

jdi*_*jdi 5

A QMainWindow与a略有不同,QDialog或者QWidget它具有"中央小部件"的概念.窗口具有预定义区域,用于处理工具栏,菜单和停靠栏等内容,并将中央窗口小部件定义为窗口的主要内容.窗口本身通常不会分配布局.但我假设你正在做的是在窗口布局上设置值(这将不起作用).

您设置为中央窗口小部件的窗口小部件很可能具有自己的布局.默认情况下,中央窗口小部件可以扩展到边缘.首先考虑这个例子:

#include <QApplication>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QListWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow *window = new QMainWindow;
    window->resize(800,600);

    QListWidget *listWidget = new QListWidget;
    window->setCentralWidget(listWidget);

    window->show();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

您将看到列表小部件完全展开到边缘.但是在一个更现实的例子中:

#include <QApplication>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QListWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow *window = new QMainWindow;
    window->resize(800,600);

    QWidget *central = new QWidget;
    QListWidget *listWidget = new QListWidget;

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(listWidget);

    //Uncomment this following line to remove margins
    //layout->setContentsMargins(0,0,0,0);

    central->setLayout(layout);

    window->setCentralWidget(central);

    window->show();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

您有一个容器窗口小部件,然后由布局和列表窗口小部件组成.此中央窗口小部件的布局是引入边距的布局.