关于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)
{
。。。