码迷,mamicode.com
首页 > 其他好文 > 详细

自定义实现复选框

时间:2018-01-12 00:05:32      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   部分   tle   navig   div   对象   pos   http   win   

项目中需要用到复选框,而QComboBox只能实现单选操作。即使是加以改造可以多选,也只能一次选择一个选项,不符合项目需求。于是就花了两天时间来自己实现一个可行的复选框。

实现方案:QLineEdit + QListView + QPushButton

第一步是实现类似于QComboBox的显示框。

一个只读的QLineEdit + QPushButton就可以实现。这个QPushButton对象的父指针必须是QLineEdit,这样按钮才能浮在QLineEdit上。

需要根据实现界面大小计算按钮的起始位置。

 

第二步实现下拉框。

QListView + QStandardItemModel 框架可以简单的实现这个复选功能。底部还添加两个按钮:确定和取消。用于选择完之后的操作。

需要注意的是要设置这个窗体的属性   setWindowFlags(Qt::Popup);

这个属性可以确保在下拉列表失去焦点时,会触发隐藏操作(hide)

 

第三步是把前两个实现的控件变成一个整体。第二个控件不能设父指针,它不属于界面任何部分。

代码的实现还是很简单的。

具体的你可以参考 GitHub 上的实现,在MyMulitComboBox有完整的实现代码。

自定义实现复选框

标签:style   部分   tle   navig   div   对象   pos   http   win   

原文地址:https://www.cnblogs.com/zhugaopeng/p/8270817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!