【永利集团304com】快速开发QCombox以及业务样式自定义

 那是本人在品种实战中的个人总括,写的皇皇,有个别东西也不自然标准,某个是和睦揣度的,还可望各位多多照管,多多切磋。

 关于QCombox要是无需自定义,其实写UI是很简短的。

开创实例:QComboBox*  m_pMicrophoneCombox = new QComboBox;

自己是用的QSS去的写样式,这里用了三个命名函数:m_pMicrophoneCombox->setObjectName(“DeviceCombox”);

比如是用的setstylesheet直接在代码里去写就好了。

下边说多少个属性函数:

m_pMicrophoneCombox->set马克斯VisibleItems(2);//最大可知区域为显示两条。

m_pMicrophoneCombox->setEditable(false); //设置QComboBox可编辑。

m_pMicrophoneCombox->setFocusPolicy(Qt::NoFocus);//设置QCombox未有标准。

m_pMicrophoneCombox->setLine艾德it(edit);//edit是一个lineedit,正是说QCombox的LineEdit能够自定义,而QT的源码中,顶部也是一个LineEdit。

m_pMicrophoneCombox->setCurrentIndex(0); // 设置当前选中的目录。

m_pMicrophoneCombox->setCurrentText(TR_TALK_DEVICE_COMBOX);//设置QCombox当前的显得text,作者是用宏封装的,知足中期修改。

m_pMicrophoneCombox->setItemData(i,
list[i]);//QCombox也可以友善传入叁个链表,况且本人定义索引,当然,你想传一条数据,而且自个儿定义索引。

QListWidget* pListWidget = new QListWidget();//new一个widget的实例。

m_pMicrophoneCombox->setModel(pListWidget->model());//塞进widget的model。
m_pMicrophoneCombox->setView(pListWidget);//将widget装进Combox。

m_pMicrophoneCombox->count();//用来总括combox下拉窗体的大大小小。

m_pMicrophoneCombox->addItems(list);//插入八个列表。

m_pMicrophoneCombox->addItem(“111”);//插入单条数据。

如上函数基本满意专门的学业必要,借使交互的体制相比较复杂,供给自定义样式,那样的话,我们就要自个儿去写每一个item的样式。

深入分析下QCombox的源码,其实她的落成正是三个LineEdit和二个ListWidget,知道啊这一个就足以友善去重新写贰个ListWidget。

Item *pItem = new Item();
//item是谐和自定义写的布局,每二个item的自定义样式就足以写在这几个里面。
QListWidgetItem *pListWidgetItem = new
QListWidgetItem(list[i],pListWidget);//笔者是将链表的多寡塞进QCombox里。
pItem->setItemData(list[i]);//给每三个item塞进多少
pListWidget->setItemWidget(pListWidgetItem,
pItem);//关于这些函数作者的领会是:在下边一层上面再覆盖一层。

下一场在QSS的体裁里写hover、pressed鼠标事件,就有鼠标的互相。

这种艺术固然平价,可是数量不与UI分离,都搅在一团。

极品的方案正是:

  既然QT的combox支持listwidget,那么全体都用自身定制的listwidget。

 在itemwidget里写布局,自身搞三个delegate,在代理去管理UI,数据在model里去操作,这里的model大概要本身包装一层,满足combox的竞相供给。

pListWidget->m_pModel->Append(list[i]);//将每三个数额塞进model,剩下的数额操作就由model去管理。

新鲜注意的是:那一年,qt原生的那些接口都不奏效了,比如:setcurrenttext还也许有setcurrentindex,查看源码发掘都以依照索引来操控,而事实上,大家用本身的model

去管理的数目,并不会转移贰个索引来满足combox管理的数码,所以那么些对外的接口可能也要团结去封装出来,能够说基本上是本末颠倒了combox,自身去组装LineEdit和ListWidget。

事实上代码量是贪惏无餍的,公司工作能够去封装成控件,方便开辟。

    最终,如若大神们有越来越好的措施,迎接商讨。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注