QT:QLabels 不尊重边界

QT: QLabels not respecting borders

我正在创建一个非常基本的 QT 应用程序,我 运行 遇到以下问题:

rasp4home::ui::MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    paletteSetup();

    mTime.setText("00.22");
    mTime2.setText("00.21232");

    setLayout(new QBoxLayout(QBoxLayout::TopToBottom));

    layout()->addWidget(&mTime);
    layout()->addWidget(&mTime2);
}

void rasp4home::ui::MainWindow::paletteSetup()
{
    setAutoFillBackground(true);
    auto palette = QApplication::palette();
    palette.setColor(QPalette::All, QPalette::Background, backgroundColor);
    palette.setColor(QPalette::All, QPalette::WindowText, textColor);

    setPalette(palette);
}

现在我希望两个标签都按从上到下的顺序显示,但我将它们放在一起。我做错了什么?

您需要在 内部 主 window 创建一个小部件并将其设置为 centralWidget,并在此小部件中设置您的布局。

注意:此示例是在 macOS 上完成的,因此它没有相同的命名空间。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
        paletteSetup();

        mTime.setText("00.22");
        mTime2.setText("00.21232");

        QBoxLayout* layout = new QBoxLayout(QBoxLayout::TopToBottom);

        layout->addWidget(&mTime);
        layout->addWidget(&mTime2);

        QWidget* mainWidget = new QWidget();

        mainWidget->setLayout(layout);

        // QMainWindow will free mainWidget when appropriate
        setCentralWidget(mainWidget);
}