首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选定单元格的行数和列号

选定单元格的行数和列号
EN

Stack Overflow用户
提问于 2015-01-16 09:50:20
回答 1查看 2.5K关注 0票数 2

背景:

我有一个带有多行和多列的简单QTableWidget。用户可以每次在同一列中选择多行单元格。(它们只能一次在同一列中选择单元格)

就像这样:

目标:

我想探测到,

  1. 起始行号
  2. 结束行号,以及
  3. mouse release上选择的列号。

我的尝试:

我想我的问题有两个部分,

  • 首先是检测mouse release事件。但是在翻阅了文档之后,我找不到mouse release event。我所能看到的只有CellclickedCellchanged等。那么,如何在QTableWidget中检测鼠标释放事件呢?
  • 第二,获取选择的RowColumn数,我发现有一个名为selectedIndexes()的函数,它帮助我获取索引。就像这样: 对于self.calendar.selectedIndexes()中的项目:打印item.row(),item.column()

但我不知道这是否正确的做法。我只想检查选择开始和结束的行,再加上正在进行选择的列。有什么好办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 16:56:42

这段代码背后的思想是创建一个自定义QTableWidget类,它添加了一个鼠标发布事件。

代码语言:javascript
运行
复制
from PyQt4 import QtCore, QtGui

class CustomQTableWidget(QtGui.QTableWidget):    
    def __init__(self, *args, **kwargs):
        QtGui.QTableWidget.__init__(self, *args, **kwargs)
        #Fill Qtable
        self.insertColumn (0)
        self.insertColumn (1)
        self.insertColumn (2)
        self.insertColumn (3)
        self.insertRow (0)
        self.insertRow (1)
        self.insertRow (2)
        self.insertRow (3)
        self.insertRow (4)
        self.insertRow (5)
        self.insertRow (6)

    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton: #Release event only if done with left button, you can remove if necessary

            #Your code should go here
            indexSelection = []

            for item in self.selectedIndexes(): 
                indexSelection.append( str(item.row())+ "-" + str(item.column()) )

            print indexSelection


class MyDialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)

        self.tableWidget = CustomQTableWidget() #Create a custom QtableWidget
        hbox = QtGui.QHBoxLayout() #Put stuff in a layout...
        hbox.addWidget(self.tableWidget) #...
        self.setLayout(hbox) #...

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    w = MyDialog()
    w.show()
    sys.exit(app.exec_())

当释放左按钮时,这个输出应该如下所示:

代码语言:javascript
运行
复制
>>> ['1-1', '2-1', '3-1', '4-1', '5-1']

我想您将能够使用返回的数据,根据您的需要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27981202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档