今天复习发现的一个dock部件,这是一个非常好用的拖拉界面的部件。
其一:分页。
在这之前我自己写过类似浏览器的添加页签(也包括那个 关闭按钮,这边dock可以自己自定义控件)。
当时也用到了许多知识点,过程写的稍显复杂。(需要用QMap键值对来存取,每一个页面对应一个html等等。。。)现在发现可以直接使用dock小部件来完成这项功能。
其二:拖拉窗口。
将分页拖拉出来,这也是浏览器的功能之一。稍显可惜的是前面我说我自己做过类似浏览器分页的这款功能,但我当时并没有考虑到这个技术点,所以也并不知道自己写这个轮子的复杂过程。希望我有机会还是接着把那个项目按这个需求给补充完。
接下来贴上代码~~~~
#include "dockwindows.h"
#include <QTextEdit>
#include <QDockWidget>
DockWindows::DockWindows(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("DockWindows")); //设置主窗口的标题栏文字
QTextEdit *te = new QTextEdit(this); //定义一个QTextEdit 对象作为主窗口
te->setText(tr("Main Window"));
te->setAlignment(Qt::AlignCenter);
setCentralWidget(te); //将此编译框设为主窗口的中央窗体
//停靠窗口 1
QDockWidget *dock = new QDockWidget (tr("DockWindow1"),this);
dock->setFeatures(QDockWidget::DockWidgetMovable);//可移动
dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
QTextEdit *te1 = new QTextEdit();
/* dock小部件可以被用户在dock之间移动 */
te1->setText(tr("Window1,The dock widget can be moved between docks by the user" ""));
dock->setWidget(te1);
addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口 2
dock = new QDockWidget (tr("DockWindow2"),this);
dock->setFeatures(QDockWidget::DockWidgetClosable|
QDockWidget::DockWidgetFloatable);//可关闭、可浮动
QTextEdit *te2 = new QTextEdit();
/* dock小部件可以与主窗口分离 *//* 并且浮动为一个独立的窗口,并且可以关闭 */
te2->setText(tr("Window2,The dock widget can be detached from the main window," "and floated as an independent window, and can be closed"));
dock->setWidget(te2);
addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口 3
dock = new QDockWidget (tr("DockWindow3"),this);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性
QTextEdit *te3 = new QTextEdit();
/* dock小部件可以被关闭、移动和浮动 */
te3->setText(tr("Window3,The dock widget can be closed , moved , and floated,"));
dock->setWidget(te3);
addDockWidget(Qt::RightDockWidgetArea,dock);
}
DockWindows::~DockWindows()
{
}
大亮点我认为dock就是这两点,其他的一些小细节我也不好一一截图,我把源码上传你到CSDN上,你们可以自行下载下来体验体验哈~~~
版权声明:本文为weixin_48268336原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。