这是一个停靠窗口,可停靠在主窗口的上下左右边框,停靠窗口显示的内容需要通过插入内容进行显示
QDockWidget::DockWidgetFeatures用于设置窗口的特性,包括以下几种:
QDockWidget::DockWidgetClosable 窗口可关闭
QDockWidget::DockWidgetMovable 窗口可移动
QDockWidget::DockWidgetFloatable 窗口可浮动
QDockWidget::AllDockWidgetFeatures 窗口可关闭,可移动,可浮动
QDockWidget::NoDockWidgetFeatures 窗口不可关闭,不可移动,不可浮动
可移动的效果: 可浮动可关闭的效果:
Qt::DockWidgetAreas用于设置窗口的可停靠位置,包括以下几种:
Qt::LeftDockWidgetAreas 可停靠于左侧
Qt::RightDockWidgetAreas 可停靠于右侧,上面的例子为停靠于右侧
Qt::TopDockWidgetAreas 可停靠于顶部
Qt::BottomDockWidgetAreas 可停靠于底部
Qt::AllDockWidgetAreas 可停靠于所有位置(上下左右
Qt::NoDockWidgetAreas 只停靠于插入的位置
主窗口->addDockWidget 设置dockwidget插入的位置
Qt::DockWidgetArea用于设置插入的位置,包括以下几种:
Qt::LeftDockWidgetArea 插入到左侧
Qt::RightDockWidgetArea 插入到右侧
Qt::TopDockWidgetArea 插入到顶部
Qt::BottomDockWidgetArea 插入到底部
Qt::AllDockWidgetAreas 插入到所有位置(意义不明= =
Qt::NoDockWidgetArea 不进行插入操作
使用QStackedWidget,两个QDockWidget,主窗口QMainWindow,做出以下效果
第一个QDockWidget使用一个QListWidget作为内容,第二个QDockWidget使用QTextBrowser作为显示内容
通过选择QListWidget的Item,来进行QStackedWidget的窗口切换
MainWindow
#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
void init();
private slots:
void setCurrentWidget(int index);
private:
QStackedWidget * m_pWidget;
QDockWidget * m_pListDock;
QDockWidget * m_pMessageDock;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
init();
}
MainWindow::~MainWindow()
{
}
void MainWindow::init()
{
m_pWidget = new QStackedWidget(this);
m_pListDock = new QDockWidget("Select Widget", this);
m_pMessageDock = new QDockWidget("Messages", this);
FirstWidget * firstWidget = new FirstWidget(m_pWidget);
SecondWidget * secondWidget = new SecondWidget(m_pWidget);
//第一个是继承了QWidget的类,在其中插入了一个QTextEdit
//第二个是继承了QListWidget的类,插入了几个Item
//横向展示item,使用listWidget->setFlow(QListWidget::LeftToRight)
m_pWidget->addWidget(firstWidget);
m_pWidget->addWidget(secondWidget);
m_pWidget->setCurrentIndex(0);
m_pWidget->setMinimumSize(450, 350);
setCentralWidget(m_pWidget);
m_pListDock->setFeatures(QDockWidget::DockWidgetMovable);
//设置停靠窗口的特性,此处为可移动
m_pListDock->setAllowedAreas(Qt::RightDockWidgetArea);
//设置在主窗口中(parent中)可停靠的位置,此处设置为右边框
QListWidget * list = new QListWidget(m_pListDock);
list->addItem("FirstWidget");
list->addItem("SecondWidget");
m_pListDock->setMinimumSize(200, 150);
m_pListDock->setWidget(list);
m_pMessageDock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);
//此处为可浮动可关闭
m_pMessageDock->setAllowedAreas(Qt::RightDockWidgetArea);
QTextBrowser * textBrowser = new QTextBrowser(m_pMessageDock);
textBrowser->setText("The Message Browser");
m_pMessageDock->setWidget(textBrowser);
addDockWidget(Qt::RightDockWidgetArea,m_pListDock);
addDockWidget(Qt::RightDockWidgetArea,m_pMessageDock);
connect(list, SIGNAL(currentRowChanged(int)), this, SLOT(setCurrentWidget(int)));
resize(600, 350);
}
void MainWindow::setCurrentWidget(int index)
{
m_pWidget->setCurrentIndex(index);
}