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 ...
随机推荐
- web项目跨域访问
1.同域相互访问 假设A.html 与 b.html domain都是localhost (同域) A.html中iframe 嵌入 B.html,name=myframe A.html有js fun ...
- class 类(4)
要将类实例化,然后通过实例来调用类的方法(函数).在此,把前面经常做的这类事情概括一下: 方法是类内部定义函数,只不过这个函数的第一个参数是self.(可以认为方法是类属性,但不是实例属性) 必须将类 ...
- 在Servlet中使用spring注入的bean
package abu.csdn.servlet; import java.io.IOException; import javax.servlet.ServletContext; ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- SQL Server常用脚本
一.迁移登录用户脚本: select 'create login [' + p.name + '] ' + case when p.type in('U','G') then 'from window ...
- ncsim仿真VHDL
ncsim仿真VHDL 1.文件列表 ctrl.vhd design_io.vhd tb.vhd compile.nc simulate.nc ./shm/shmtb.tcl 2. Compile你的 ...
- 除去内容中的HTML代码方法
显示内容时,需要截取部分,而不要全部显示.在截取时,会出现这样的情况: 截取一定量的字符串后,可能会把未关闭的表格HTML代码留下来,最終导致界面受影响, 下面的是C#解决办法: public str ...
- 临时解决linux下time wait问题
通过 netstat -anp | grepTIME_WAIT | wc -l 命令查看数量,发现TIME_WAIT的连接数量超过了阈值 1.初步怀疑是程序没有关闭连接,codereview了 ...
- IOS中对于一些控件的抖动效果
这两天在网上看到一个帖子讨论关于有些app 输入账密时候 错误的话会有抖动效果出现,然后自己琢磨了下如何实现,下面上代码!!! 首先 写一个UIView的分类 #import <UIKit/UI ...
- Homebrew -- Mac软件管家(套件管理yun……)
也许是之前使用linux系统的时候总是习惯使用wget 在mac中只有curl,有点略显不习惯 于是乎某天在搜索mac开发者的时候发现了Homebrew这个东西 ok,是那么句话--惰性是人的天性 有 ...