gpt4 book ai didi

c++ - QMainWindow::splitDockWidget 的 QDockWidget 拉伸(stretch)因子?

转载 作者:行者123 更新时间:2023-11-30 01:08:30 27 4
gpt4 key购买 nike

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

这是我目前的布局方式:

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

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

这是我想要实现的目标的图像: enter image description here

谢谢!

最佳答案

按照您的建议使用 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();
}

关于c++ - QMainWindow::splitDockWidget 的 QDockWidget 拉伸(stretch)因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com