Qt5—可停靠窗口QDockWidget [2013-10-19整理]

一个很要好的朋友,他有一帮从小学初中一直玩到大学毕业至今的朋友,看着身边的朋友换了一茬又一茬儿。

终于有一天忍不住问他,为什么你们能在这个浮躁的世界里一直做好朋友做兄弟直到现在?

“我们从不深聊对方的感情,尽量AA制,还有一点儿缘分吧”

====================================================================================

QDockWidget是QWidget的子类,也等于是说他可以像其他的Widgets一样互相嵌套,搭配布局。

1.一个简单的例子,选择QMainWindow作为基类

    //配置主窗口
    setWindowTitle(tr("DockWindows"));
    QTextEdit *text = new QTextEdit(this);
    text->setText(tr("Main window"));
    text->setAlignment(Qt::AlignCenter);//QTextEdit对象内容的对齐方式
    setCentralWidget(text);

    //配置第一个停靠窗口
    QDockWidget *dock1 = new QDockWidget(tr("First Dock Window"), this);
    QTextEdit *dockText1 = new QTextEdit();
    dockText1->setText("First Window,Try to move The title.");
    dock1->setWidget(dockText1);
    addDockWidget(Qt::RightDockWidgetArea, dock1);

    //配置第二个停靠窗口
    QDockWidget *dock2 = new QDockWidget(tr("Second Dock Window"), this);
    QTextEdit *dockText2 = new QTextEdit();
    dockText2->setText("Second Window,Try to move The title.");
    dock2->setWidget(dockText2);
    addDockWidget(Qt::RightDockWidgetArea, dock2);

    //配置第三个停靠窗口
    QDockWidget *dock3 = new QDockWidget(tr("Third Dock Window"), this);
    QTextEdit *dockText3 = new QTextEdit();
    dockText3->setText("Third Window,Try to move The title.");
    dock3->setWidget(dockText3);
    addDockWidget(Qt::RightDockWidgetArea, dock3);
运行的结果可能会是这样,试着拖动DockWidget,他们之间还可以相互嵌套

2.QDockWidget类重要属性的说明

QDockWidget(const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = 0)
QDockWidget(QWidget * parent = 0, Qt::WindowFlags flags = 0)
~QDockWidget()
Qt::DockWidgetAreas	allowedAreas() const
DockWidgetFeatures	features() const
bool	isAreaAllowed(Qt::DockWidgetArea area) const
bool	isFloating() const
void	setAllowedAreas(Qt::DockWidgetAreas areas)
void	setFeatures(DockWidgetFeatures features)
void	setFloating(bool floating)
void	setTitleBarWidget(QWidget * widget)
void	setWidget(QWidget * widget)
QWidget *	titleBarWidget() const
QAction *	toggleViewAction() const
QWidget *	widget() const
tabifyDockWidget(dock1,dock2,dock3);
dock3->raise();
让窗口默认以重叠方式显示,优先显示dock3
 
DockWidgetFeatures	features() const
void	setFeatures(DockWidgetFeatures features)
配置可停靠窗口允许停靠的区域,默认为所有区域均可停靠
Qt::LeftDockWidgetArea
Qt::RightDockWidgetArea
Qt::TopDockWidgetArea
Qt::BottomDockWidgetArea
DockWidgetFeatures	features() const
void	setFeatures(DockWidgetFeatures features)
DockWidgetClosable	//标题栏显示关闭按钮
DockWidgetMovable	//可拖动
DockWidgetFloatable	//初始悬浮
最后一个也可以通过void	setFloating(bool floating)来设置初始悬浮
 
void QDockWidget::setTitleBarWidget(QWidget * widget)
自定义窗口标题栏,默认参数是0,通过它来实现好看的定制化浮动/停靠窗口
值得注意的是,如果设置了自定义标题栏,还需要设置一个合适的尺寸来保证停靠和悬浮时的合理显示
QWidget::sizeHint() and QWidget::minimumSizeHint().
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值