QMainWindow::splitDockWidget 的 QDockWidget 拉伸因子?

2024-03-28

我正在使用 QMainWindow 在 C++ 中手动布局 Qt 应用程序。我想要在屏幕底部有两个并排停靠的小部件,但我希望它们具有不成比例的宽度。目前,我只能让它们具有相同的宽度。有没有办法设置拉伸因子或其他机制来获得不均匀的码头分割?

以下是我目前的布局方式:

OutputPanel* outputPanel = new OutputPanel;
mainWindow.addDockWidget(Qt::BottomDockWidgetArea, outputPanel);

ThumbnailViewer* thumbnailViewer = new ThumbnailViewer;
mainWindow.splitDockWidget(outputPanel, thumbnailViewer, Qt::Horizontal);

Here's an image of what I'd like to achieve: enter image description here

Thanks!


正如您所建议的,使用 QMainWindow::resizeDocks 。设置 resizeDock 参数后,当主窗口调整大小时,相对比例将保持不变。

#include "mainwindow.h"

#include <QApplication>
#include <QLabel>
#include <QDockWidget>
#include <QList>

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

    MainWindow w;
    w.setCentralWidget(new QLabel("MAIN WINDOW CONTENTS"));

    QDockWidget* dwa = new QDockWidget("DOCK A");
    dwa->setWidget(new QLabel("DOCK A CONTENTS"));

    QDockWidget* dwb = new QDockWidget("DOCK B");
    dwb->setWidget(new QLabel("DOCK B CONTENTS"));

    w.addDockWidget(Qt::BottomDockWidgetArea, dwa);
    w.addDockWidget(Qt::BottomDockWidgetArea, dwb);

    w.splitDockWidget(dwa, dwb, Qt::Horizontal);

    w.show();

    QList<QDockWidget*> docks = { dwa, dwb };

    float windowWidth = w.size().width();
    int dockWidthA = 0.60 * windowWidth;
    int dockWidthB = 0.40 * windowWidth;

    QList<int> dockSizes = { dockWidthA, dockWidthB };

    w.resizeDocks(docks, dockSizes, Qt::Horizontal);

    return a.exec();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QMainWindow::splitDockWidget 的 QDockWidget 拉伸因子? 的相关文章

随机推荐