c++ - 如何使用 Qt 减少小部件和窗口大小之间的距离?

标签 c++ qt qt5

我目前拥有的:

Current window

我想要的:

Wanted window

对于那些无法查看图像的人;小部件之间以某种形式展开。我想让他们尽可能靠近。如何将小部件挤得更近?

我已经试过了:
setFixedSize(sizeHint());setSizeConstraint(QLayout::SetFixedSize); 在主窗口、布局和小部件对象上。似乎没有任何效果。

另外,我也很感激:
(让标签更接近 lineEdit)

我正在使用 Windows 和 Qt 5.11.1,64 位。
窗口构造函数代码:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    widget = new QWidget();
    label = new QLabel(tr("Enter your name:"));
    nameLine = new QLineEdit;
    nameLine->setMinimumWidth(250);
    label->setBuddy(nameLine);

    okButton = new QPushButton (tr("Ok"));
    clearButton = new QPushButton (tr("Clear"));

    connect(okButton, SIGNAL(clicked()), this, SLOT(message()));
    connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));

    QGridLayout *grid = new QGridLayout;
    grid->addWidget(label,0,0);
    grid->addWidget(nameLine,1,0);
    grid->addWidget(okButton,0,1);
    grid->addWidget(clearButton,1,1);

    widget->setLayout(grid);

    setWindowTitle(tr("Leo v0.0"));
    setCentralWidget(widget);
}

最佳答案

一个可能的解决方案是用addStretch()建立一个QVBoxLayout:

QVBoxLayout *vlay = new QVBoxLayout;
QGridLayout *grid = new QGridLayout;
grid->addWidget(label, 0, 0);
grid->addWidget(nameLine, 1, 0);
grid->addWidget(okButton, 0, 1);
grid->addWidget(clearButton, 1, 1);
vlay->addLayout(grid);
vlay->addStretch();
widget->setLayout(vlay);
setCentralWidget(widget);

关于c++ - 如何使用 Qt 减少小部件和窗口大小之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51841521/

相关文章:

qml - 创建一个组件作为对象实例中的成员

c++ - 省略 for 循环值

c++ - 自动将类成员注册到 C++ 中的包含对象

c++ - C/C++ 库的想法

android - 无论小部件结构如何,如何确保按钮关闭应用程序?

c++ - QMediaPlayer 资源错误

c++ - 在 C++ 中,为什么我们不能使用 > 和 < 来比较迭代器?

Qt:QWebview 在另一台机器上不显示 jpg、gif、png 图像

qt - 将 QMessageBox 移动到屏幕的右下角

linux - 当我使用静态构建时,Qt qml 显示错误