table行的选择(含ctrl,shift)

table行的选择(含ctrl,shift),ctrl按下则支持无序多选,shift按下则支持有序多选

<html >

<head >
<meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312" >
<title >new   page </title >
<script >
var   ctrl=false;
var   shift=false;
document.οnkeydοwn=function   (){
if(event.keyCode==17){
ctrl=true;
}else   if(event.keyCode==16){
shift=true;
}
};
document.οnkeyup=function   (){
ctrl=false;
shift=false;
}
function   choose(obj){
var   rowI=event.srcElement.parentNode.rowIndex;
if(ctrl&&shift)   return;
if(!ctrl&&!shift){
for(var   i=0;i <table1.rows.length;i++){
table1.rows(i).cells(0).firstChild.checked=false;
table1.rows(i).bgColor="";
}
table1.rows(rowI).cells(0).firstChild.checked=true;
table1.rows(rowI).bgColor="red";
table1.currentRow=rowI;
}
if(ctrl){
table1.rows(rowI).cells(0).firstChild.checked=true;
table1.rows(rowI).bgColor="red";
}
if(shift){
for(var   i=0;i <table1.rows.length;i++){
table1.rows(i).cells(0).firstChild.checked=false;
table1.rows(i).bgColor="";
}
if(rowI <table1.currentRow){
for(var   i=rowI;i <=table1.currentRow;i++){
table1.rows(parseInt(i)).cells(0).firstChild.checked=true;
table1.rows(parseInt(i)).bgColor="red";
}
}else{
for(var   i=table1.currentRow;i <=rowI;i++){
table1.rows(parseInt(i)).cells(0).firstChild.checked=true;
table1.rows(parseInt(i)).bgColor="red";
}
}
}
}
</script >

</head >

<body >
<table   cellpadding="0"   border="1"   cellspacing="0"   width="400"   id="table1"   currentRow="0"   οnclick="choose(this)" >
<tr   bgcolor="red" >
<td > <input   type=checkbox   checked >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
<tr >
<td > <input   type=checkbox >  </td >
<td >  </td >
</tr >
</table >


</body >

</html > 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过设置QAbstractItemView的selectionMode属性来实现。 以下是一个示例代码: ```python from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtCore import Qt from PyQt5.QtGui import QStandardItemModel, QStandardItem class MyTableView(QTableView): def __init__(self, parent=None): super().__init__(parent) # 设置选择模式为选择 self.setSelectionMode(QTableView.SingleSelection) self.setSelectionBehavior(QTableView.SelectRows) # 设置只能单选 self.setEditTriggers(QTableView.NoEditTriggers) self.setDragEnabled(False) self.setDragDropMode(QTableView.NoDragDrop) self.setShowGrid(False) self.verticalHeader().setVisible(False) self.horizontalHeader().setStretchLastSection(True) def mousePressEvent(self, event): # 如果按下CTRLSHIFT键,则可以多选 if event.buttons() & (Qt.ControlModifier | Qt.ShiftModifier): super().mousePressEvent(event) else: # 否则只能选中单 index = self.indexAt(event.pos()) if index.isValid(): self.selectionModel().clearSelection() self.selectionModel().select(index, QTableView.Select) else: super().mousePressEvent(event) if __name__ == '__main__': app = QApplication([]) table_view = MyTableView() model = QStandardItemModel(5, 3) for i in range(5): for j in range(3): item = QStandardItem('item({}, {})'.format(i, j)) model.setItem(i, j, item) table_view.setModel(model) table_view.show() app.exec_() ``` 在上面的代码中,我们自定义了一个MyTableView类继承自QTableView,并重写了mousePressEvent方法。在这个方法中,我们检查鼠标是否按下了CTRLSHIFT键,如果是,则调用父类的mousePressEvent方法,否则只选中单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值