我正在使用QMainWindow在C++中手动布局Qt应用程序.我想在屏幕底部放置两个并排停靠的小部件,但我希望它们具有不成比例的宽度.目前,我只能让它们具有相同的宽度.有没有办法设置拉伸因子或其他机制来获得不均匀的码头拆分?
这是我目前如何铺设它们:
OutputPanel* outputPanel = new OutputPanel;
mainWindow.addDockWidget(Qt::BottomDockWidgetArea, outputPanel);
ThumbnailViewer* thumbnailViewer = new ThumbnailViewer;
mainWindow.splitDockWidget(outputPanel, thumbnailViewer, Qt::Horizontal);
Run Code Online (Sandbox Code Playgroud)
谢谢!
正如你的建议使用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();
}
Run Code Online (Sandbox Code Playgroud)