我是靠谱客的博主 坚定苗条,最近开发中收集的这篇文章主要介绍记录QDockWidget实现竖版排列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

QDockWidget用法很简单,设置几个参数就可以实现基本功能。我这里是用在QScrollArea里。

由于QDockWidget只应用于QMainWindow里,所以:

QMainWindow *mw = new QMainWindow();
d.ui.verticalLayout->addWidget(mw );//d.ui.verticalLayout是QScrollArea里的frame的布局。

 enum DockOption {
        AnimatedDocks = 0x01,
        AllowNestedDocks = 0x02,
        AllowTabbedDocks = 0x04,
        ForceTabbedDocks = 0x08,  // implies AllowTabbedDocks, !AllowNestedDocks
        VerticalTabs = 0x10,      // implies AllowTabbedDocks
        GroupedDragging = 0x20    // implies AllowTabbedDocks
    };

mw ->setDockOptions(QMainWindow::DockOption::AnimatedDocks);//dock配置
mw ->setStyleSheet("QMainWindow::separator{height:10;}");//间距 = 布局里的spacing

/*然后可以加入QDockWidget */

QDockWidget *dw1 = new QDockWidget(this);
                dw1->setContentsMargins(0, 0, 0, 0);
                dw1->installEventFilter(this);
                dw1->setTitleBarWidget(d.runframeList.back()->getTopBar());//用自己的titleBar
                dw1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置可移动、可关闭、可悬浮
                dw1->setAllowedAreas(Qt::RightDockWidgetArea);//可以放置的位置,这里选右边,就是只能放在mainwindow的右侧。这样就可以只允许上下拖拽移动位置
                dw1->setWidget(d.runframeList.back().get());//设置内容widget。
                d.mw->addDockWidget(Qt::RightDockWidgetArea, dw1);//放置的位置 右边
                connect(dw1, &QDockWidget::dockLocationChanged, [this](Qt::DockWidgetArea area)
                {//这个信号是dock的状态发生改变会进,如放到左侧,放到右侧了。
                    if (area != Qt::NoDockWidgetArea)/*因为这里全部的dockwidget都放在右侧,所以拖拽过程中,他的状态只会在 Right 和No之间切换*/
                    {
                       //摘出时悬浮状态就是NoDockWidgetArea,所以这里可以响应每次放下的操作。
                    }

                });

//border样式设置, 这里研究好久。最后用的是拼接的方法。

//先设置titlebar的 左 上 右 border 下boder设为none

dockWidget->setStyleSheet("QDockWidget>QWidget{border-left:1px solid #63666E;
        border-top:1px solid #63666E;border-right:1px solid #63666E;border-bottom:none;}");

//再设置 dockwidget内绑定的widget的 左 下 右 border  上boder设为none
        setStyleSheet("QFrame#RunView{border-left:1px solid #63666E;
        border-bottom:1px solid #63666E;border-right:1px solid #63666E;border-top:none;}");

最后

以上就是坚定苗条为你收集整理的记录QDockWidget实现竖版排列的全部内容,希望文章能够帮你解决记录QDockWidget实现竖版排列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部