Qt QComboBox内核原理解析

本文深入探讨QComboBox的实现原理,包括其由QLineEdit和toolbutton组成的结构,以及与ListView的交互。QComboBox允许自定义LineEdit和ListView,但存在一些样式设置的限制。例如,设置圆角矩形时,尽管可以去除阴影,但某些样式可能不按预期工作。建议在自定义QComboBox时直接操作QComboBox本身,避免使用其子部件的样式表,以防止潜在问题。
摘要由CSDN通过智能技术生成

关于QComboBox内核是如何实现的,原理是如何的,分析如下:

QComboBox是继承自QWidget重写的窗口,的111区是用QLineEdit实现的,源码如下:

QLineEdit *lineEdit() const;

2区是用一个类似于toolbutton做出来的,可以出发下拉事件和更改图标

 

2区出发事件会弹出一个关联的ListView窗口,系统内核会弹出与该窗口关联的类似于qlistview,该关联的qlistview使用的是model-view-delegate结构,

该listview响应响应的事件,处理好和111,2区关联的数据处理既可以出来

所以QComboBox可以做到自由变换到各种形状,比如圆角矩形等不规则图形,她的lineEdit组件也是可以替换的,从源码可以看出它是删除原先的默认的lineEdit,然后换上新的LineEdit,源码如下:

void QComboBox::setLineEdit(QLineEdit *edit)

{

。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值