之前用了窗口切分,但发现一个问题,窗口变大或者变小,切分的窗口并不立即发生变化。
增加了一条语句:setCentralWidget(spliter); 之后,切分的窗口就没问题了。
看到QDockWigdet这个类后,发现使用这个类,窗口可自由伸缩,适应主窗口的变化。编写代码也不麻烦。
#include <QDockWidget>
#include <QTextEdit>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle(tr("Dock Windows"));
QTextEdit *edt = new QTextEdit(tr("Main Window"),this);
setCentralWidget(edt); //把edt设置为中心控件
QDockWidget *dockWidget2 = new QDockWidget(tr("LEFT Window 2"),this);
dockWidget2->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);
dockWidget2->setMaximumWidth(150); //防止左边工具栏被拉得不像样子
QTextEdit *edt2 = new QTextEdit(tr("LEFT Window string"));
dockWidget2->setWidget(edt2);
addDockWidget(Qt::LeftDockWidgetArea,dockWidget2);
QDockWidget *dockWidget3 = new QDockWidget(tr("BOTTOM Window "),this);
dockWidget3->setFeatures(QDockWidget::AllDockWidgetFeatures);
dockWidget3->setMaximumHeight(200); //状态栏,一定大小就足够了。以后 再根据分辨率调整。
QTextEdit *edt3 = new QTextEdit(tr("bottom Window "));
dockWidget3->setWidget(edt3);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget3);
}
运行结果:
这里, 有几个函数setCenterWidget , addDockWidget 都是QWidget 带的,这里被this调用。这意味着在一个Widget里,就可以建立这样的停靠规则:中心区域,上下左右区域。
桌面应用采用这样的布局方式,至少从模仿角度看还算可以。