我开始学习QT。当我创建一个 MainWindow 并在布局中放置一些小部件时,窗口边缘和小部件之间存在间隙,如下所示:
我怎样才能关闭这个差距?
layout()->setContentsMargins(0,0,0,0);
和编辑窗口的样式表,但没有效果。我该怎么办?
我开始学习QT。当我创建一个 MainWindow 并在布局中放置一些小部件时,窗口边缘和小部件之间存在间隙,如下所示:
我怎样才能关闭这个差距?
layout()->setContentsMargins(0,0,0,0);
和编辑窗口的样式表,但没有效果。我该怎么办?
AQMainWindow
与 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();
}
您将看到列表小部件完全扩展到边缘。但在一个更现实的例子中:
#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();
}
您有一个容器小部件,然后由布局和列表小部件组成。这个中央小部件的布局是引入边距的布局。