qt视图选择
# -*- coding: utf-8 -*-
# python:2.x
__author__ = 'Administrator'
from PyQt4.Qt import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys,os
"""
在列表、树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反色。选择也是使用了一种模型。在 model/view 架构中,这种选择模型提供了一种更通用的对选择操作的描述。
QItemSelectionModel 类获取视图中项目的选择情况。这个模型保持有项目的索引,并且独立于任何视图。这意味着,我们可以让不同的视图共享同一个选择模型,从来达到一种同步操作的目的。选择由选择区域组成。模型只将选区的开始和结束的索引位置记录下来,以保证对于很大的选区也有很好的性能。非连续选区则由多个连续选择组成。
当前项 选择项
只能有一个当前项。 可以有多个选择项。
使用键盘或者鼠标点击可以改变当前项。 选择项使用两种状态:选择和未选择,这取决于项目之前的状态和其它一些设置,例如,单选或多选。只有在用户进行交互的时候,这种状态才会发生改变。
当前项可以使用 F2 或者鼠标双击进行编辑(前提是程序允许)。 当前项可以结合另外一个锚点指定被选择或者去除选择的一块选区(或二者的结合)。
当前项通常会有一个焦点框进行标识。 选择项使用选区颜色进行标识。
在处理选择的时候,我们可以将 QItemSelectionModel 当成数据模型中所有数据项的选择状态的一个记录。一旦选择模型创建好,这些数据项就可以在不知道哪些项被选择的情况下进行选择、取消选择或者改变选择状态的操作。所有被选择项的索引都在可随时更改,其它组件也可以通过信号槽机制修改这些选择的信息。
标准视图类(QListView、QTreeView 以及 QTableView)已经提供了默认的选择模型,足以满足大多数应用程序的需求。某一个视图的选择模型可以通过 selectionModel() 函数获取,然后使用 setSelectionModel() 提供给其它视图共享,因此,一般没有必要新建选择模型。
如果需要创建一个选区,我们需要指定一个模型以及一对索引,使用这些数据创建一个 QItemSelection 对象。这两个索引应该指向给定的模型中的数据,并且作为一个块状选区的左上角和右下角的索引。为了将选区应用到模型上,需要将选区提交到选择模型。这种操作有多种实现,对于现有选择模型有着不同的影响。
"""
class SysTem(QWidget):
def __init__(self,parent=None):#初始化
super(SysTem,self).__init__(parent)
#创建32个数据项表格模型
tableWidget=QTableWidget(self)
tableWidget.setColumnCount(8)
tableWidget.setRowCount(4)
tableWidget.setFixedSize(500,200)
selectionmodel=tableWidget.selectedItems()
#选择表格上一些单元格
topleft=tableWidget.model().index(0,0,QModelIndex())
botomright=tableWidget.model().index(5,2,QModelIndex())
#获取指定的索引定义为选区,使用QItemSelection 对象,然后将其赋值给我们获取的选择模型:
toggleSelection=QItemSelection()
toggleSelection.select(topleft,botomright)
#默认情况下,选择操作会只会影响到指定的模型索引。但是,我们也可以改变这一设置。例如,只选择整行或者整列
# columnSelection=QItemSelection()
# columnSelection.select(topleft,botomright)
# selectionmodel.select(columnSelection,QItemSelectionModel.Select|QItemSelectionModel.Columns)
# rowSelection=QItemSelection()
# rowSelection.select(topleft,botomright)
# selectionmodel.select(rowSelection,QItemSelectionModel.Select|QItemSelectionModel.Rows)
#然使用两个索引设置了一个区域,但是,在选择的使用我们使用了QItemSelectionModel::Rows 和 QItemSelectionModel::Columns 这两个参数
# 使用 QItemSelectionModel::Current 参数可以将当前选区替换为新的选区;使用
# QItemSelectionModel::Clear 则会将原来已有的选区全部取消。为了进行全选,我们可以设置选区为左上角和右下角两个索引:
app=QApplication(sys.argv)
system=SysTem()
system.show()
sys.exit(app.exec_())
如图:
地址:http://www.tuicool.com/articles/736zaa
qt视图选择的更多相关文章
- Qt 学习之路 2(47):视图选择
Qt 学习之路 2(47):视图选择 豆子 2013年3月28日 Qt 学习之路 2 34条评论 选择是视图中常用的一个操作.在列表.树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反 ...
- Qt 学习之路:视图选择 (QItemSelectionModel)
选择是视图中常用的一个操作.在列表.树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反色.在 Qt 中,选择也是使用了一种模型.在 model/view 架构中,这种选择模型提供了一种 ...
- Qt 学习: 视图选择 (QItemSelectionModel)
博主QQ:1356438802 选择是视图中经常使用的一个操作.在列表.树或者表格中,通过鼠标点击能够选中某一项,被选中项会变成高亮或者反色.在 Qt 中,选择也是使用了一种模型.在 model/vi ...
- 为Qt视图中的文字添加彩虹渐变效果
将view中的文本内容用自定义的颜色显示是一种十分常见的需求.今天我们稍微改变些"花样". 本文索引 需求定义 需求分析 代码实现 思考题 需求定义 我们的需求很简单,现在有一些在 ...
- Qt获取选择的文件夹和文件路径
获取文件夹路径 static QString getExistingDirectory(QWidget *parent = Q_NULLPTR, const QString &caption ...
- 关于类视图选择继承APIView还是工具视图(ListAPIView、CreateAPIView等等)
APIView使用方法,直接继承APIView,get或者post请求.方法很简单1.先获取到要操作的数据,然后把数据放到serializer中序列化或者反序列化,最后return返回值(记得.dat ...
- Qt编程选择QtCreator还是Qt+VS
结论:推荐QtCreator 对于一个新手而言,基本体会如下: Qt Creator Qt Creator优势 可以实现Ui和代码无缝切换.(VS不行) 对于汉字的支持更好 提示功能做的更好. 比如: ...
- QComboBox 树形视图选择
QComboBox 控件支持树形图显示. A. void QComboBox::setModel(QAbstractItemModel *model): B. void QComboBox::se ...
- qt tableview 选择模式
QAbstractItemView::SingleSelection QAbstractItemView::ContiguousSelection QAbstractItemView::Extende ...
随机推荐
- 给UIImage添加蒙版
http://stackoverflow.com/questions/17448102/ios-masking-an-image-keeping-retina-scale-factor-in-acco ...
- python 之 Paramiko学习
paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 一.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码 ...
- .Net的PDF转图片
用的是破解版的 O2S.Components.PDFRender4NET.dll 插件, 简单引用即可 public static class PdfToImage { , , ) { try { / ...
- compass安装
修改ruby软件包的sources 国外服务器不给力,经常链接失败,换成国内淘宝的:https://ruby.taobao.org/ 先移除本有的sources gem sources --remov ...
- Android与JS混编(js调用android相机)
参考android相机调用,http://blog.csdn.net/yanzi1225627/article/details/33028041/,谢谢 相机怎么调用就不做赘述了,下面是js调用 ...
- 工欲善其事必先利其器---SQL在线可视化模型设计,(还可学习拖拽知识)
作为技术人员,在开发项目中,不可避免的要跟数据库打交道,一个完整的项目正常情况下是讨论完整体需求,有了大致的框框在脑海中后,是需要设计合理的数据库的,这时会有其他的专业的UML建模工具可以使用, 但是 ...
- JS文件中加载jquery.js
原文链接:http://blog.csdn.net/whatday/article/details/39553451 最近有一个需求: 1.在一个html中只能引入一个JS文件 不能有JS代码和其他J ...
- 字典:当索引不好用时2 - 零基础入门学习Python026
字典:当索引不好用时2 让编程改变世界 Change the world by program 上节课我们学习到在一些情况下,比序列更实用的映射类型:字典.我们知道字典也有个关键符号就是大括号(也叫花 ...
- MHA环境搭建【4】manager相关依赖的解决
mha的manager 结点依赖与mha-node软件包.所以在安装mha-manager之前要把mha-node安装上去:再者mha-manger还依赖于perl-Config-Tiny perl- ...
- 100个iOS开发/设计程序员面试题汇总,你将如何作答?
100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0) 无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目, ...