房地产项目迅猛支付QCombox以及业务样式自定义

 那是自个儿在档次实战中的个人计算,写的急促,有个别东西也不自然标准,有个别是友好猜度的,还希望各位多多指教,多多评论。

 关于QCombox假设不供给自定义,其实写UI是很简短的。

制造实例:QComboBox*  m_pMicrophoneCombox = new QComboBox;

笔者是用的QSS去的写样式,那里用了1个命名函数:m_pMicrophoneCombox->setObjectName(“DeviceCombox”);

设尽管用的setstylesheet直接在代码里去写就好了。

上面说多少个属性函数:

m_pMicrophoneCombox->set马克斯VisibleItems(二);//最大可知区域为体现两条。

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

m_pMicrophoneCombox->setFocusPolicy(Qt::NoFocus);//设置QCombox没相当。

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

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(“11壹”);//插入单条数据。

如上函数基本满意工作要求,假诺交互的样式相比较复杂,必要自定义样式,那样的话,大家就要团结去写各个item的样式。

浅析下QCombox的源码,其实他的落到实处正是三个Line艾德it和2个ListWidget,知道啊这一个就足以友善去重新写3个ListWidget。

Item *pItem = new Item();
//item是友好自定义写的布局,每七个item的自定义样式就足以写在那一个里面。
QListWidgetItem *pListWidgetItem = new
QListWidgetItem(list[i],pListWidget);//作者是将链表的数额塞进QCombox里。
pItem->setItemData(list[i]);//给每二个item塞进多少
pListWidget->setItemWidget(pListWidgetItem,
pItem);//关于那几个函数小编的敞亮是:在底下1层上边再覆盖1层。

然后在QSS的体制里写hover、pressed鼠标事件,就有鼠标的相互。

这种办法即使实惠,但是数量不与UI分离,都搅在壹团。

一级的方案便是:

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

 在itemwidget里写布局,自身搞2个delegate,在代理去管理UI,数据在model里去操作,那里的model恐怕要协调包装一层,满意combox的互动须要。

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

极度注意的是:那年,qt原生的这些接口都不奏效了,例如:setcurrenttext还有setcurrentindex,查看源码发现都是依照索引来操控,而其实,大家用本身的model

去管理的数码,并不会转变三个目录来满足combox管理的多少,所以那些对外的接口可能也要和谐去封装出来,能够说基本上是扬弃了combox,自个儿去组装Line艾德it和ListWidget。

实在代码量是众多的,集团事情能够去封装成控件,方便开发。

    最终,假使大神们有更加好的诀窍,欢迎评论。

 

 

相关文章