有哪位大姐用过Q.show精华液什么时候用呢?

PyQt5系列教程(36): QQ模拟(QListView的使用)2上期我们介绍了QAbstractListModel子类化之后,我们模型(Model)的实现,本期我们介绍一下QListView的使用,这里的使用也是自定义一个类,当然是继承了QListView。核心代码class ListView(QListView):
map_listview = []
def __init__(self):
super().__init__()
self.m_pModel = ListModel()
self.setModel(self.m_pModel)
def contextMenuEvent(self, event):
hitIndex = self.indexAt(event.pos()).column()
if hitIndex & -1:
pmenu = QMenu(self)
pDeleteAct = QAction("删除",pmenu)
pmenu.addAction(pDeleteAct)
pDeleteAct.triggered.connect(self.deleteItemSlot)
pSubMenu = QMenu("转移联系人至" ,pmenu)
pmenu.addMenu(pSubMenu)
for item_dic in self.map_listview:
pMoveAct = QAction(item_dic['groupname'] ,pmenu)
pSubMenu.addAction(pMoveAct)
pMoveAct.triggered.connect(self.move)
pmenu.popup(self.mapToGlobal(event.pos()))
def deleteItemSlot(self):
index = self.currentIndex().row()
if index & -1:
self.m_pModel.deleteItem(index)
def setListMap(self, listview):
self.map_listview.append(listview)
def addItem(self, pitem):
self.m_pModel.addItem(pitem)
def move(self):
tolistview = self.find(self.sender().text())
if tolistview is self:
prelistview = self.sender().text()
QMessageBox.warning(self, "警告", "该联系人就在{},还怎么移动啊!".format(prelistview))
index = self.currentIndex().row()
pItem = self.m_pModel.getItem(index)
tolistview.addItem(pItem)
self.m_pModel.deleteItem(index)
def find(self, pmenuname):
for item_dic in self.map_listview:
if item_dic['groupname'] == pmenuname:
return item_dic['listview']
这段代码分为两大部分:自定义右键菜单(上下文菜单)和增删移的操作。map_listview = []
map_listview是一个类变量,那么这个类变量与实例变量有什么区别呢?类变量为所有实例共享的,而实例变量则是每个实例独有的。举个简单的例子:class P:
list = [0]
def __init__(self):
self.a = 1
def out(self):
print(self.list)
print('a = ' + str(self.a))
print('*'*10)
pp.list.append(1)
print(ppp.list)
**********
从这个例子当中我们可以看出,当pp这个实例给list增加一个数据之后,ppp.list也随之改变了。为什么写这个呢?因为我们要利用map_listview保存QListView对象和分组名称的对应关系。因为这样我们就能靠分组名称找到对应的QListView对象,根据QListView对象就行调用对应的QAbstractListModel的子类了。so,我们每新建一个分组就会自动初始化随机的联系人信息了。self.m_pModel = ListModel()
self.setModel(self.m_pModel)
设置要呈现的视图的模型,这里我们用的是自定义的ListModel类。def contextMenuEvent(self, event):
hitIndex = self.indexAt(event.pos()).column()
if hitIndex & -1:
pmenu = QMenu(self)
pDeleteAct = QAction("删除",pmenu)
pmenu.addAction(pDeleteAct)
pDeleteAct.triggered.connect(self.deleteItemSlot)
pSubMenu = QMenu("转移联系人至" ,pmenu)
pmenu.addMenu(pSubMenu)
for item_dic in self.map_listview:
pMoveAct = QAction(item_dic['groupname'] ,pmenu)
pSubMenu.addAction(pMoveAct)
pMoveAct.triggered.connect(self.move)
pmenu.popup(self.mapToGlobal(event.pos()))
这个函数主要是实现上下文菜单的,也就是传说中的单击右键菜单。如下图:hitIndex = self.indexAt(event.pos()).column()
这个函数是说返回鼠标指针相对于接收事件的小部件的位置,然后我们根据这个位置的坐标返回视口坐标点处的项目的模型索引,最后根据索引返回此模型索引引用的列(感觉说得好绕口啊~!)。if hitIndex & -1:
pmenu = QMenu(self)
pDeleteAct = QAction("删除",pmenu)
pmenu.addAction(pDeleteAct)
pDeleteAct.triggered.connect(self.deleteItemSlot)
pSubMenu = QMenu("转移联系人至" ,pmenu)
pmenu.addMenu(pSubMenu)
这段比较好理解,就是新增上下文菜单,这里不做过多介绍,因为前面的文章讲解过了,可以参考:当我们点击删除菜单的时候调用deleteItemSlot()函数。for item_dic in self.map_listview:
pMoveAct = QAction(item_dic['groupname'] ,pmenu)
pSubMenu.addAction(pMoveAct)
pMoveAct.triggered.connect(self.move)
还记得上面介绍map_listview的作用吗?这里我们将每个分组名称取出,新建一个QAction对象,加入到pSubMenu当中。点击这个每个分组的时候就会执行联系人转移分组操作,这里就是move()的调用。pmenu.popup(self.mapToGlobal(event.pos()))
显示菜单,以便动作QAction对象在指定的全局位置p处。这里的全局位置p是根据小部件的本地坐标转换为全局坐标的,故使用QWidget.mapToGlobal()。def deleteItemSlot(self):
index = self.currentIndex().row()
if index & -1:
self.m_pModel.deleteItem(index)
返回当前项目的模型索引,并根据索引返回此模型索引引用的行,然后到模型里面删除相应的数据。def setListMap(self, listview):
self.map_listview.append(listview)
将分组名称和QListView对象这个字典增加到map_listview数据列表中。我们会在QQ这个类里面用到。def addItem(self, pitem):
self.m_pModel.addItem(pitem)
新增一个联系人,我们在转移联系人的时候会用到。def move(self):
tolistview = self.find(self.sender().text())
if tolistview is self:
prelistview = self.sender().text()
QMessageBox.warning(self, "警告", "该联系人就在{},还怎么移动啊!".format(prelistview))
index = self.currentIndex().row()
pItem = self.m_pModel.getItem(index)
tolistview.addItem(pItem)
self.m_pModel.deleteItem(index)
def find(self, pmenuname):
for item_dic in self.map_listview:
if item_dic['groupname'] == pmenuname:
return item_dic['listview']
这个函数是实现联系人转移的。tolistview = self.find(self.sender().text())
我们根据点击的分组名称找到对应的QListView对象。find函数是自定义的。if tolistview is self:
prelistview = self.sender().text()
QMessageBox.warning(self, "警告", "该联系人就在{},还怎么移动啊!".format(prelistview))
假设联系人就在将转移的分组,那我们就没有必要转移了。else:
index = self.currentIndex().row()
pItem = self.m_pModel.getItem(index)
tolistview.addItem(pItem)
self.m_pModel.deleteItem(index)
否则我们首先要获得这个联系人,然后在将转移的分组中将这个联系人加上,原分组联系人删除就行了。最后ok,今天的介绍就到这里吧,本次内容还有一期。如果你喜欢本篇文章,请给我点赞赞赏(推荐)分享给你的好友们吧!全部源码本期更新完毕再放。关注微信公众号:学点编程吧,你可以学到更多!加油!(? o?_o?)? (*o??o?) 14添加评论分享收藏文章被以下专栏收录承蒙各位学友们的支持,《Python图形界面编程》课程后推出后得到了1万多的学习量。课程推出后通过与广大学友的交流,本着对先前的课程进行进一步改进的想法(如:数据库操作、网络传输等均没有涉及),并结合当下Python3学习人员的日渐增多的情形,决定再推出一个PyQt5的教程,希望大家一起交流共同进步。为什么选择Q.show
- 全球时尚品牌网
为什么选择Q.show
为什么选择Q.show
& 近期,有许多新闻爆料,许多的女性因使用过劣质化妆品,而这些恶劣的化妆品里面含有重金属,所以太部分人使用过后导致自己的皮肤过敏暗红出现色斑等不良反应。类似这样的事件层出不穷,可见选择一款适合自己的化妆品是多么的重要。在这同时我们有的时候也不禁要追问:化妆品到底是起美化人的作用还是起伤害人的作用?这世界上难道没有一种管用却又不伤害皮肤的化妆品吗?其实之所以会出现这种问题,还是应该怪那些生产恶劣化妆品的商家,让用户不敢去相信好的化妆品,所以当面对这种生产恶劣化妆品的商家,我们应该向社会揭开恶劣化妆品成分的秘密,更将其有毒害性的成分曝光,让更多优秀合格的化妆品、护肤品走进人的生活之中,从而使美丽长存青春长驻。
&  以前当我们听到商家声称能够在一周内让女性返回到20岁的完美肌肤的时候,肯定不相信,绝对是忽悠人的。但随着时代的进步,科技的发展。这种能让女性在一周内慢慢恢复肌肤的化妆品好像也在渐渐的出现,并且真实可靠。其中Q.show精华液便是这些新化妆品中的杰出代表,它是属于北京七巧时代科技有限公司旗下产品。这一款护肤品是七巧团队首将尝试将生物科技与化妆品相结合而生产出来的产品。
  逆颜奇迹Q.show 精华液是一款集安全快速美白、延缓皮肤衰老、祛皱、补水保湿、毛孔收缩、紧致肌肤等诸多功能为一体,使用一次即能呈现显著效果,可以明确感觉到面部开始有光泽、红润、容光焕发。一时间,许多女性用户见证了&重回青春&的神奇功效。以Q.show精华液为首的生物科技化妆品的横空出世,着力是推进了人类在抗衰技术上的进程。因为它是以生物技术为核心,采取了&以内养外&的手法,将&第 99 段活性蛋白&作为载体,用于肌肤内层,迅速给皮肤细胞补充营养,激活细胞,让活力弱的细胞迅速年轻充满活力,让塌陷的细胞迅速饱满,让新生的青春细胞越来越多,使肌肤逐渐年轻自然,皮肤逐渐由内而外的透出美白和细嫩,并且完全没有副作用,是一种符合人体生理需求的化妆品。
  Q.show精华液这是一款纯天然由植物复合提取的精华夜。也是目前为止最安全最有效的皮肤自我修复性产品,同是也是当今时代一种不用手术,无创伤修复皮肤问题的护肤保养产品,而且让人重回青春时代,体验过三个周期的用户曾表明当她使用Q.show精华液后,她发现身体上面皱纹舒展消失,肌肤白里透红、白皙柔嫩,而且润泽富有弹性靓丽光泽,如同恢复到了婴儿般的水嫩肌肤,皮肤机能感觉全面恢复到年轻状态。所以说七功团队研究生产Q.show精华液,就是为了达到延缓衰老的目的,让人重回青春,并且尽显贵族气质。
阅读延展热文榜单最新文章猜你喜欢随机品牌投诉建议通过E-mail将您的想法和建议发给我们投诉建议:联系我们网站客服:友情链接:投稿邮箱:确治左旋VC原液美白祛斑雀斑点斑水淡斑精华液有效吗???请真心回答 满意加分
(17条回答)
var sogou_ad_id=731549;
var sogou_ad_height=160;
var sogou_ad_width=690;在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
QListView使用QItemDelegate和QAbstractListModel控制数据存储和显示,直接显示没有问题,但是滚动条滚动时不能刷新,这是什么原因导致的,需要重载哪些虚函数接口?
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。京东上的Q.show精华液是真的吗?是不是正品?【日本护肤品吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:85,690贴子:
京东上的Q.show精华液是真的吗?是不是正品?
京东上的Q.show是真的吗?是不是正品?
贴吧热议榜
使用签名档&&
保存至快速回贴

我要回帖

更多关于 精华液哪个牌子好 的文章

 

随机推荐