标签: qtablewidget

如何在PyQt4中向动态QTableWidgetItem添加事件监听器?

我是Python和Qt新手......

我正在开发一个GUI程序,它QTableWidget在开始时显示一个数据列表.

使用该setItem()方法将行插入表中.它们是QTableWidgetItem物体.

现在我想让用户点击选择某一行(QTableWidgetItem),我的程序将填充一个辅助行QTableWidget.

我了解到有一种叫做信号和插槽的东西.我会用那个吗?也有使用的例子installEventFilter(),但它不适合QTableWidgetItem.

python qt event-handling pyqt4 qtablewidget

0
推荐指数
1
解决办法
3534
查看次数

QTableWidget更改选择模式

单击QTableWidget单元格时,它仅选择单元格.如何配置tablewidget,以便在单击一个单元格时,将选择包含单元格的整行?

它可以使用信号,插槽完成.我很好奇有没有标准的做法呢?

c++ qt selection qtablewidget

0
推荐指数
1
解决办法
4878
查看次数

调用setSortingEnabled(1)时出现意外行为

我有一个QTableWidget第一列填充了可检查的项目,所以我需要重载这些项目才能对它们进行排序.当我单击该列的标题时,排序按预期工作(行已排序 - 首先是已检查的行,然后未检查).

当我运行我的GUI并且没有单击任何列的标题来排序表然后执行此操作时,会出现问题:

tableWidget.setSortingEnabled(0); 
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);
Run Code Online (Sandbox Code Playgroud)

在那种情况下,被覆盖的__lt__被称为100次以上,但我没想到,因为我没有点击该列的标题进行排序.那么,为什么__lt__叫?为什么它比较了一些可检查的项目,即使我没有点击该列的标题来对它们进行排序?

请帮助我,__lt__当我有30多行时,调用消耗太多时间.

python qt pyqt qtablewidget

0
推荐指数
1
解决办法
690
查看次数

遍历构造函数中的QTableWidget单元吗?

我想从其构造函数中设置QTableWidget的子类为只读,但是我找不到在所有项目上放置标志的方法,并且由于在构造函数中调用了columnCount和rowCount,因此显示的代码不起作用。返回0。

for (int i=0;i<this->columnCount();i++) {
    for (int j=0;j<this->rowCount();j++) {
        this->item(i,j)->setFlags(Qt::ItemFlag::NoItemFlags);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于标题是通过Qt Designer使用双击表单进行初始化的,因此我无法从代码中了解列/行的计数(除非通过硬编码对其进行编码,但我想避免这种情况),但我找不到将标志应用于所有项目的任何方法。

我还看到了一些针对修改事件本身的变通办法,以防止数据修改,但是我也希望避免这种情况。

有没有一种方法可以正确设置这些标志,还是必须摆脱Qt Designer部分才能在构造函数中添加所有标头初始化?

c++ qt constructor qt-designer qtablewidget

0
推荐指数
1
解决办法
2484
查看次数

PyQT QTableWidget非常慢

这是我用来填充QT Designer中绘制的表格的代码.设计用于任何桌子的通用,它工作正常,但...当我尝试显示包含18列和~12000行的数据时,它只是冻结30秒或更长时间.那么,我做错了什么,有没有办法加快速度,保持代码仍然适合任何表?

那是我的代码:

...blablabla...

self.connect(self, SIGNAL("set"), self.real_set)

...blablabla...

def set_table(self, table, data):
    self.emit(SIGNAL('set'), table, data)

def real_set(self, table, data):
    """
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Assuming data is list of dict and table is a QTableWidget.

    Get first key and get len of contents
    """
    for key in data:
        rows = len(data[key])
        table.setRowCount(rows)
        break

    """
    Forbid resizing(speeds up)
    """
    table.horizontalHeader().setResizeMode(QHeaderView.Fixed)
    table.verticalHeader().setResizeMode(QHeaderView.Fixed)
    table.horizontalHeader().setStretchLastSection(False)
    table.verticalHeader().setStretchLastSection(False)

    """
    Set number of columns too
    """
    table.setColumnCount(len(data))
    table.setHorizontalHeaderLabels(sorted(data.keys()))

    """
    Now fill data
    """
    for n, key in enumerate(sorted(data.keys())):
        for m, …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt qtablewidget

0
推荐指数
2
解决办法
3003
查看次数

Pyqt5 qtablewidget 检测单元格何时发生变化

我的 Python Pyqt5 应用程序上有一个 tableWidget。问题是,当特定单元格发生变化时,我试图连接到 calculadora 函数,所以我有两个问题:

  • .cellChanged 和 itemChanged. 之间有什么区别?

-现在我正在使用这个:

self.ui.tableWidget_Calculadora.itemChanged.connect(self.calculadora)

def calculadora_1(self):
      print("Cell 1,1 Changes")
Run Code Online (Sandbox Code Playgroud)

但我想更具体一些,并在例如单元格 (1,1) 发生变化时进行连接,而不是任何单元格,即我的代码当前所做的事情。

我尝试使用这个:

self.ui.tableWidget_Calculadora.itemChanged(1,1).connect(self.calculadora)
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

TypeError: native Qt signal is not callable
Run Code Online (Sandbox Code Playgroud)

谢谢。

python qtablewidget pyqt5

0
推荐指数
1
解决办法
5748
查看次数