注意qdockwidget 标题栏 菜鸟勿进 YY172633 q...

qdockwidget 隐藏qdockwidget 标题栏栏官方没有提供相應的api,或改动源码或找点偏方了,下面这个偏方亲测可用:

看起来很靠谱但是不好用——QDockWidget总是会创建一个qdockwidget 标题栏栏

 
 

因为Qt默认的QDockWidget的特性不太能满足我嘚软件界面需求我想从QDockWidget继承做一个自定义特色的DockWidget,但不知如何下手请高手指教,谢谢:

QDockWidget默认的特性是:当Widget为浮动窗体时双击qdockwidget 标题栏欄将导致Widget Dock到主窗体中。

我需要的特性是:当Widget为浮动窗体是双击qdockwidget 标题栏栏导致Widget窗体最大化,而按qdockwidget 标题栏栏的最小化按钮时则导致Widget Dock至主窗体

函数并传递Qt::Window|Qt::WindowMinMaxButtonsHint参数给它,如此可在浮动窗体的qdockwidget 标题栏栏上显示最大化、最小化按钮但双击qdockwidget 标题栏栏时的动作却变成了:先最大化,再Dock至主窗体;

2.参考qt-project.org论坛上的朋友给出的建议重载函数mouseDoubleClickEvent,但是经过测试发现在浮动窗体的qdockwidget 标题栏栏双击并不能触发重载函数的执行,仅在窗體的控件界面上双击才能触发;查阅了QDockWidget的源代码发现qdockwidget 标题栏栏的双击动作是在QDockWidgetPrivate类中实现,而这个类Qt似乎并未在文档中向用户开放因此貌似重载mouseDoubleClickEvent这条路也走不通。


因此还有什么办法可以实现我的目的吗?
再次感谢!我确实将重写和重载给搞混淆了今天又涨姿势了,谢謝
您说的“事件过滤器”又怎么做呢?是否相对重写event函数来说要简单一点呢

再次感谢!我确实将重写和重载给搞混淆了,今天又涨姿勢了谢谢。

您说的“事件过滤器”又怎么做呢是否相对重写event函数来说要简单一点呢?

个人觉得使用事件过滤器是因为你需要实现在較多的部件重定义不同的事件,如果你只是需要重写较少的事件的话比如你只需要实现你上面所提的事件,没必要使用个人意见。。

参考资料

 

随机推荐