《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

功能:

1、可以在收缩栏插件中添加界面

2、可以把界面展开或收缩

3、可以用鼠标拖动界面改变界面的排放顺序

源码放在最下方

1、可以在收缩栏插件中添加界面

cpp 复制代码
virtual void addWidget(QWidget* widget, const QString& label, const QIcon& icon = QIcon());

参数1:插入的界面指针

参数2:插入的界面标题

参数3:插入的界面图标

demo:

在收缩栏插件中添加两个界面

cpp 复制代码
//创建收缩栏对象,这里是用插件形式读取CollpasePagePlugin.dll拿到QObject指针在强转为CollpasePagePlugin对象
//如果不清楚插件用法可以直接new一个CollpasePagePlugin对象
CollpasePagePlugin* collpasePagePlugin = PluginCore::getinstance()->GetPlugin<CollpasePagePlugin>("CollpasePagePlugin", "MTFTool");
if (collpasePagePlugin)
{
	
	collpasePagePlugin->GetWidget()->setParent(ui.groupBox);  //设置父窗体
	collpasePagePlugin->GetWidget()->setMouseTracking(true);  //设置鼠标追踪
	collpasePagePlugin->GetWidget()->parentWidget()->setMouseTracking(true);  //设置父窗体鼠标追踪
	collpasePagePlugin->SetLayout((QVBoxLayout*)ui.groupBox->layout(), -1);  //对收缩栏插件设置布局

	//创建一个widget
	m_MTFSetting = new MTFSetting(this);
	//把widget添加到收缩栏
	collpasePagePlugin->addWidget(m_MTFSetting, "MTFSetting", QIcon(":/Gen2WGMTFTester/images/MTF/MTFsetting.png"));
	
	//创建另一个widget
	m_ledWidget = new LEDControl(this);
	//把widget添加到收缩栏
	collpasePagePlugin->addWidget(ledPlugin->GetWidget(), "LEDControl", QIcon(":/Gen2WGMTFTester/images/MTF/LED.jpg"));
	
	//设置在程序运行后两个界面默认是收缩状态
	collpasePagePlugin->setItemExpand(0, false);
	collpasePagePlugin->setItemExpand(1, false);
}

2、界面展开或收缩

3、鼠标拖动界面移动和改变顺序


源码下载

相关推荐
雨师@17 小时前
go语言项目--实例化(图书管理)--005
开发语言·后端·golang
Aspiresky17 小时前
探索Rust语言之引用
开发语言·后端·rust
天空'之城17 小时前
Linux 系统编程 10:线程同步
linux·开发语言·系统编程·线程同步
Vect__17 小时前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
想你依然心痛17 小时前
AtomCode在Python数据科学项目中的使用体验:从数据分析到可视化
开发语言·python·数据分析
满天星830357717 小时前
【Qt】控件(二) (geometry及与frameGeometry的区别)
开发语言·qt
aichitang202417 小时前
数论变换(NTT)
c++·算法·fft·ntt
_olone17 小时前
AtCoder Beginner Contest 465 D - X to Y
c++·算法
大气的小蜜蜂17 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·qt·sqlite
Esaka_Forever17 小时前
Python 与 JS (V8) 垃圾回收核心区别 + 底层根源分析
开发语言·javascript·jvm