标签: qtablewidget

如何在QTableWidget的行和列中自动换行文本?

我试过了:

    QTableWidget *j = new QTableWidget (10000, 5, centralWidget);
    j->setColumnWidth (0, 500);
    j->setColumnWidth (1, 30);
    j->setColumnWidth (2, 30);
    j->setColumnWidth (3, 320);
    j->setColumnWidth (4, 310);

    j->setWordWrap (true);
Run Code Online (Sandbox Code Playgroud)

也试过resizeColumnsToContentsresizeRowsToContents,但未能成功.

如果文本长于设定的宽度,我希望句子分解.
当前,句子的冗长部分没有显示出来.

qt qtablewidget

5
推荐指数
2
解决办法
1万
查看次数

PyQt:QTableWidget中的Checkbox

我使用以下代码在我的第9列中放置一个复选框 QTableWidget

chkBoxItem = QtGui.QTableWidgetItem()
chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
chkBoxItem.setCheckState(QtCore.Qt.Unchecked)       
table.setItem(rowNo,9,chkBoxItem)
Run Code Online (Sandbox Code Playgroud)

哪里table是我的QtTableWidget.我需要将单击复选框的行添加到列表中..我到底怎么做到这一点?

亲切的问候,

python checkbox pyqt qtablewidget

5
推荐指数
1
解决办法
2万
查看次数

QTableWidget列调整大小事件

我想知道是否正在通过鼠标调整QTableWidget的列.每当调整任何列的大小时,如何发出信号?

c++ qt qtablewidget

5
推荐指数
1
解决办法
2052
查看次数

如何在可编辑的QTableWidgetItem中捕获按键?

现在我可以处理QTableWidget函数中的所有按键eventFilter()(在myTable->viewport()->installEventFilter(this);构造函数中调用之后).

在编辑时,唯一不起作用的地方是可编辑单元格(因为它会抓取所有按键).为了解决这个问题,我无法调用installEventFilter()表中的每个项目,因为这些项目不是QObjects(我也不能connect用于处理按键处理).

我唯一的解决方案是将QLineEdits放在这些单元格中,并使用事件过滤器在编辑时捕获按键.但是,仅使用标准物品可以解决它吗?(即只QTableWidgetItem带一面旗帜Qt::ItemIsEditable)

我也可以打电话grabKeyboard()给我QTableWidget.在这种情况下,我将按下所有按键(即使在用户编辑单元格时),但它会阻止编辑框(即用户无法输入任何内容).可能是在调用grabKeyboard()表后修复损坏的编辑框?

c++ qt qtablewidget qtablewidgetitem

5
推荐指数
1
解决办法
346
查看次数

第一次填充QTableWidget时,一切都很好,但是当我重新填充它时,速度明显变慢

代码:

populateTable()
{
  tableWidget->clearContents();
  tableWidget->setRowCount(stringList.size());

  for(int i = 0; i < stringList.size(); ++i)
  {
    tableWidget->setItem(i, 0, new QTableWidgetItem(stringList.at(i)));
  }
}
Run Code Online (Sandbox Code Playgroud)

问题:

第一次运行populateTable(),一切都很好.但接下来的一段时间,它的运行速度明显慢于以前.

讨论:

仔细测试后,我怀疑clearContents()是问题所在.因为只需更改代码

tableWidget->clearContents();
Run Code Online (Sandbox Code Playgroud)

至:

tableWidget->setRowCount(0);
Run Code Online (Sandbox Code Playgroud)

解决问题,但现在又出现了另一个问题; 将行计数设置为'0'似乎不会删除堆分配的QTableWidgetItems,它似乎只是保留了项目的所有权,因此它会留下内存泄漏.(或者至少我只是这么认为......)

Qt在QTableWidget中的文档相当模糊,所以我并不确切知道clearContents()实际上做了什么.在文档中,它说"从视图中删除不在标题中的所有项目",这样我就会问,表中的内容是否只是隐藏?它会被删除吗?我不太确定.我的理论是clearContents()只隐藏项目,任何下一次填充表的尝试实际上删除并删除每个项目然后分配一个新的项目来设置在表格上,这反过来又是一项昂贵的操作.

另一件有趣的事情是Qt关于QTableWidget的文档表明填充QTableWidget的正确方法是在堆上分配一个QTableWidgetItem,然后将其设置在一个带有setItem()的表格单元格上,就像我在上面的代码中看到的那样,我发现它是奇怪...

综上所述:

是否有另一种方法来填充和重新填充Qt表而没有所有这些问题?如果没有,有没有办法解决这些问题?

c++ qt qtablewidget qtablewidgetitem

4
推荐指数
1
解决办法
3961
查看次数

QTableWidget像QTreeWidget一样自动拉伸最后一个字段

无论如何让QTableWidget的标题项目像QTreeWidget一样伸展到完整大小?

qt qtablewidget qt4.8

4
推荐指数
1
解决办法
1万
查看次数

如何检测在PyQt4中单击QTableWidget的cellwidget用户的行数和列数?

我的目标是将设置multiple QPushButtoncellwidgetQTableWidget,每当用户单击这些按钮中的任何一个时,它将打印出其中的表RowColumn编号。

因此,对于1 QPushButton

import sys
from PyQt4 import QtGui,QtCore

def CurrentPos():
    clickme = QtGui.qApp.focusWidget()
    index = table.indexAt(clickme.pos())
    if index.isValid():
        print (index.row(), index.column())

def AddValues():
    table.setRowCount(5)
    for i in range(5):
        button = QtGui.QPushButton('Click1')
        table.setCellWidget(i,1,button)
        button.clicked.connect(CurrentPos)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    table = QtGui.QTableWidget()
    table.setFixedSize(QtCore.QSize(330,250))

    table.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
    table.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
    table.setSelectionMode(QtGui.QTableWidget.NoSelection)
    table.horizontalHeader().setStretchLastSection(True)
    table.setFocusPolicy(QtCore.Qt.NoFocus)

    table.setColumnCount(3)
    table.setHorizontalHeaderLabels(['A','B','C'])
    table.setColumnWidth(0,50)
    table.setColumnWidth(1,200)
    table.show()

    AddValues()

    app.exec_()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

当我单击每个按钮时,它将打印出行号和列号。但是当我更改功能AddValues以适应多个按钮时:

def AddValues():
    table.setRowCount(5)
    for i in range(5):
        button1 …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt pyqt4 qtablewidget

4
推荐指数
2
解决办法
5482
查看次数

QTableWidget。发出 cellChanged 信号

有QTableWidget。我需要发送带有行列和文本的 cellChanged 信号。我怎样才能做到这一点?

--

我已经将信号与插槽连接起来。我需要发送信号。

qt qtablewidget emit

4
推荐指数
1
解决办法
1万
查看次数

什么是水平标题项

我正在遵循一些示例来构建带有单元格内按钮的 QTableWidget,并且有人建议使用 QTableWidget.horizo​​ntalHeaderItem。现在,这很好用,但用它我无法从特定的行/列取回项目(因为 QTableWidget.horizo​​ntalHeaderItem 没有指定的行)。

但是 QTableWidget.horizo​​ntalHeaderItem 的实际用途是什么以及为什么我要使用它而不是 QTableWidget.item ?

简单的 PyQT5 代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.mainWidget = QtWidgets.QWidget()
        self.mytable = QtWidgets.QTableWidget(self.mainWidget)

        self.mytable.setColumnCount(1)
        self.mytable.setRowCount(2)

        self.my_edit_btn = QtWidgets.QPushButton('Edit')
        self.my_edit_btn.clicked.connect(self.button_A_pressed)
        self.mytable.setCellWidget(0, 0, self.my_edit_btn)
        item = QtWidgets.QTableWidgetItem()
        self.mytable.setHorizontalHeaderItem(0, item)
        self.mytable.horizontalHeaderItem(0).setText("Edit")
        # self.mytable.setItem(0, 0, item)
        # self.mytable.item(0, 0).setText("Edit")

        self.my_edit_btn = QtWidgets.QPushButton('Edit')
        self.my_edit_btn.clicked.connect(self.button_B_pressed)
        self.mytable.setCellWidget(1, 0, self.my_edit_btn)
        item = QtWidgets.QTableWidgetItem()
        self.mytable.setHorizontalHeaderItem(0, item)
        self.mytable.horizontalHeaderItem(0).setText("Edit")
        # self.mytable.setItem(1, 0, item)
        # self.mytable.item(1, 0).setText("Edit")

        self.verticalLayout.addWidget(self.mytable) …
Run Code Online (Sandbox Code Playgroud)

python pyqt qtablewidget pyqt5

4
推荐指数
1
解决办法
3484
查看次数

如何从 QTableWidget 项目中获取选定的标题标签?

我有一个QTableWidget项目。我用 pandas 数据填充这个项目DataFrame。我必须将选定的列值打印为报告。我可以轻松地从 DataFrame 打印数据。但是,我需要知道verticalHeader( QTableWidget) 标签才能从“DataFrame”获取数据。如何从中获取选定的标题标签QTableWidget

我尝试QTableWidget.selectionModel().selectedIndexes()QTableWidget.itemFromIndex()方法。我只能获取表格内的项目,而不能获取标题标签。

这是我的桌子。我可以获取“产品编号”、“产品选项”和“标价(美元)”标题下的商品,但无法获取这些标题。

python pyqt qtablewidget pyqt5

4
推荐指数
1
解决办法
9104
查看次数

标签 统计

qtablewidget ×10

qt ×7

pyqt ×4

python ×4

c++ ×3

pyqt5 ×2

qtablewidgetitem ×2

checkbox ×1

emit ×1

pyqt4 ×1

qt4.8 ×1