我正在編寫一個小應用程序,允許用戶自由定義圖表。目前的解決方案使用QDockWidget
,以便用戶可以根據自己的喜好調整大小和重新排列這些地塊。添加新的DockWidget後自動調整DockWidgets的高度
我對此解決方案非常滿意,但仍有一個缺點。如果用戶將新的QDockWidget
添加到已定義的那個,那麼一個好的行爲是將所有QDockWidget
調整爲具有相同的高度。
以下代碼說明了我試圖實現的內容。
#include <QtGui>
#include <QMainWindow>
#include <QDockWidget>
#include <QLabel>
#include <QApplication>
#include <QAction>
#include <QMenuBar>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto window = new QMainWindow;
auto label = new QLabel("Central Widget");
label->hide();
window->setCentralWidget(label);
window->setDockNestingEnabled(true);
for (int i = 1; i < 3; i++) {
auto dock = new QDockWidget(QString("Plot %1").arg(i));
dock->setWidget(new QLabel(QString("Plot %1").arg(i)));
window->addDockWidget(Qt::LeftDockWidgetArea, dock);
}
window->setFixedSize(QSize(300, 600));
window->show();
// User presses a button and the following would get executed!
auto dock = new QDockWidget(QString("New Plot"));
dock->setWidget(new QLabel(QString("New Plot")));
window->addDockWidget(Qt::LeftDockWidgetArea, dock);
return app.exec();
}
不幸的是,新添加的圖有一個非常小的尺寸,而其他兩個仍然很大。
如何以最少量的額外工作實現這種行爲?我真的不得不手動調整我所有的QDockWidgets嗎?
如果他有超過3'QDockWidget's? – IAmInPLS
@IAmInPLS我的意思是說,弗蘭克最初添加了兩個DockWidgets,並調用'window-> show()'這樣'window''根據可用的大小調整可用的'dockwidgets'的大小。所以當添加第三個'dockwidget'並且dockwidget沒有任何最小尺寸時,它不會調整其他dockwidgets的大小,這就是爲什麼完整的窗口區域不能在它們之間共享。三隻是一個例子,可以有'n dockwidgets'。 –
所以,你可能會提供更通用的答案.. – IAmInPLS