QDockWidget可以使界面悬浮在其他界面之上,常用方式如下:
dock = new QDockWidget(tr("Logs"), this); //创建QDockWidget对象 m_LogListWidget = new QListWidget(dock); //创建QListWidget对象 m_LogListWidget->setParent(dock); //设置QListWidget父级为QDockWidget dock->setWidget(m_LogListWidget); //把QListWidget界面添加到QDockWidget addDockWidget(Qt::BottomDockWidgetArea, dock); //设置悬浮窗停靠在主界面底部 menu->addAction(dock->toggleViewAction());
toggleViewAction方法返回一个动作对象,该动作对象通过点击后可以切换停靠窗口的可见状态,即该动作是一个对停靠部件窗口显示或关闭的开关,如果将该动作加到菜单上,对应菜单栏的文字即为停靠窗口的title文字,这样就可以在菜单上点击对应菜单项进行停靠窗口的关闭和显示,如下界面:
注意:如果不设立addDockWidget停靠位置,悬浮窗会默认悬浮在主窗口之下,如图
想要悬浮窗悬浮在主窗口之上需要加dock->setFloating(true);
也可以打开程序时让悬浮窗隐藏,dock->hide();通过点停靠窗中的文字打开悬浮窗。
menu->addAction(dock->toggleViewAction());这条其实就是一个显示和隐藏的开关。
可以设置悬浮窗允许停靠的区域:
dock->setAllowedAreas(Qt::RightDockWidgetArea | Qt::TopDockWidgetArea); //允许悬浮窗摆放的区域,右边或上边