c++ - QMainWindow 中的 QT 4.8 填充

标签 c++ qt qt4.8 qmainwindow

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

enter image description here

我怎样才能消除这种差距?

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

最佳答案

QMainWindowQDialogQWidget 略有不同,因为它具有“中央小部件”的概念。该窗口具有预定义的区域来处理工具栏、菜单和停靠栏等内容,并将中央小部件定义为窗口的主要内容。窗口本身通常不分配布局。但我假设您正在做的是在窗口布局上设置值(这不会产生影响)。

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

#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();
}

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

关于c++ - QMainWindow 中的 QT 4.8 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205244/

相关文章:

c++ - 模板推导和 decltype(T) 如何作用于引用?

c++ - 在任何全局对象之前初始化

qt - 桌面 GUI 应用程序的垃圾收集语言

c++ - qt 防止 qdialog/window 随 mainwindow 一起移动

c++ - 将抽象类型作为 Q_PROPERTY 公开给 QML

c++ - 为什么访问一个变量的地址会改变另一个变量的地址?

c++ - 如何递归访问不同的类?

c++ - 我如何在 Qt Creator 中创建一个复选框矩阵(无文本),并在运行时指定尺寸?

c++ - qt 应用程序崩溃但不容易重现,我已经捕获了转储堆栈以及如何通过堆栈查找源代码

regex - Qt4.8:如何使 QLineEdit 始终以大写显示文本并且仍然具有 RegExp