学习记录-Qt窗口控件的动态添加和删除
来源:互联网 发布:重生之2006知乎 编辑:程序博客网 时间:2024/04/19 12:41
一般用Qt写软件,使用designer创建一个窗口,拖几个控件进行一下布局就够用了,但有些需求,需要自定义各种类型的控件,并且很多控件需要根据数据的交互,动态的添加和删除,为此学习了一下Qt的实现方法,在此记录之。
方法是,使用布局的addWidget函数添加控件,删除时使用removeWidget函数,需要设置控件的deleteLater属性,也可以使用delete直接删除。
void ConItem01::checkClick(bool state){ QCheckBox *chk = (QCheckBox *)sender(); //转换成指定的类 QString objName = chk->objectName(); //得到发出信号的对象名 if (objName == "chk1") { if(state){ //根据状态选择增加或者删除控件 Frame *fm = new Frame; //初始化一个自定义的控件类 fm->setObjectName(tr("1#")); //设置新增对象名称 fm->setTitle(1); //自定义函数 ui->verticalLayout->addWidget(fm); //添加到水平布局(这里根据需要选择布局) }else{ Frame *fm = ui->scrollArea->findChild<Frame*>("1#"); //找到指定名称的控件 ui->verticalLayout->removeWidget(fm); //移除控件 fm->deleteLater(); //delete fm; //使用delete也可以 } <span style="font-family: Arial, Helvetica, sans-serif;">}</span><span style="font-family:Arial, Helvetica, sans-serif;">}</span>
其中,需要注意:
1、新增的控件名称不要重复,以免自己删除时找不到;
2、在需要动态增减控件的部件上添加一个布局控件,然后在布局上增减控件,这样部件大小会跟着变化;
3、新增的控件一定要设置一个控件大小的最小宽和高,不然加入布局就缩到最小了;
4、删除时找指定控件,一定要在部件上找,不要在布局上,否则程序会崩溃;
5、如果有多处操作会删除控件,在分findChild函数后加上指针为空判断,防止程序崩溃。
效果图:
1 0
- 学习记录-Qt窗口控件的动态添加和删除
- Qt动态添加删除控件总结
- 动态添加和删除控件
- JavaScript动态添加和删除控件
- JavaScript动态添加和删除控件
- vb动态添加和删除PictureBox控件
- html 页面控件动态添加和删除
- JavaScript动态添加和删除控件
- C#实现动态添加和删除控件
- 学习记录-Qt文件的读写和删除等操作
- 动态添加删除控件
- unity动态添加删除iGUI的控件
- QT 学习笔记 窗口控件的布局
- 学习记录-Qt中控件的坐标
- JS动态添加删除控件
- JS动态添加删除控件
- javascript 动态添加删除控件
- 动态添加、删除上传控件.
- Strom数据流分组解析
- 初涉 JavaScript 5
- Java-类库-Guava-Table
- codevs线段树练习3
- ubuntu下学习SDL2
- 学习记录-Qt窗口控件的动态添加和删除
- 用hostapd配置wifi,isc-dhcp-server
- WebService学习总结 一
- 我如何添加一个空目录到Git仓库?
- 浅谈:request,session,application
- php的preg_split的正则函数preg系列?
- SpringMVC 上传图片保存到服务器 同时更改图片名称保存至数据库
- Red Hat 6.3安装gcc gc++
- WEBRTC SOCKET