标签: qtablewidget

替换 QTableWidget 中的项目

如果我创建一个新项目并将其插入/设置到已有项目的QTableWidgetItem单元格中,则前一个项目是否会被删除或者是否会出现内存泄漏?QTableWidget我是否需要检索现有项目并更改其属性?

qt qt4 qtablewidget qtablewidgetitem qt5

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

当 Qdoublespinxbox 的值在 customDelegate 内更改时发出信号

我有子类 qstyleditemdelegate

在 col==1 和 col==2 中,我创建了 Qdoublespinxbox,我想发出我的 valuechanged

Qdoublespinxbox,计算小计 ( col1 * col2 )

意思是:在代表之外

每次 Qdoublespinxbox 的值发生变化时,我都会更新值小计

qt qtablewidget emit

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

添加自定义小部件作为 QTableWidget Horizo​​ntalHeader

QWidget是否可以在 上显示自定义字符串而QHeaderView不仅仅是通用字符串?

另外,是否可以改变唯一的高度horizontalHeaderItem?当我这样做时它崩溃了:

(ui->myTable->horizontalHeaderItem(0))->setSizeHint(QSize(200,300));
Run Code Online (Sandbox Code Playgroud)

c++ qt qtablewidget qheaderview qt5

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

QTableWidget 中的 PyQt5 QComboBox

我真的已经尝试了一切来解决我的问题,但它不起作用。这是我将组合框放入表格每一行的简单代码。它实际上适用于 setItem(),我用它来将字符串放入每一行。但它不适用于 setCellWidget(),我必须使用 setCellWidget() 将组合框放入行中。就好像 setCellWdiget() 将组合框放入行后删除它,因为它最终只出现在最后一行,我不明白为什么。如果你们中有人能帮助我,那就太好了。提前谢谢了!

这是代码:

import sys
from PyQt5 import QtWidgets, QtCore

class Window(QtWidgets.QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50,50,500,500)
        self.setWindowTitle('PyQt Tuts')
        self.table()


    def table(self):

        comboBox = QtWidgets.QComboBox()

        self.tableWidget = QtWidgets.QTableWidget()
        self.tableWidget.setGeometry(QtCore.QRect(220, 100, 411, 392))
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setRowCount(5)
        self.tableWidget.show()

        attr = ['one', 'two', 'three', 'four', 'five']
        i = 0
        for j in attr:
            self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(j))
            self.tableWidget.setCellWidget(i, 1, comboBox)
            i += 1


def run():
    app = QtWidgets.QApplication(sys.argv)      
    w = Window()
    sys.exit(app.exec_())      

run()
Run Code Online (Sandbox Code Playgroud)

python qt qtablewidget qcombobox pyqt5

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

让 Enter 键的行为类似于 QTableWidget 中的 Tab

我在 PyQt5 和 Qt Designer 中使用 QTableWidget 来创建数据输入表。我想要的是一种简单的方法,使“Enter”keyPressEvent 在表格中移动,就像按下 Tab 按钮一样。以下代码捕获 Enter 键按下事件。如何让它移动光标?

def keyPressEvent(self, ev):        
    if ev.key() in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
        print("Enter key pressed")
Run Code Online (Sandbox Code Playgroud)

python pyqt qtablewidget pyqt5

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

如何将文件放入 PyQt5 中的 QTableWidget 中

我正在尝试创建一个表格小部件,我可以在其中删除音频文件并用文件名、文件大小等填充表格。我的代码如下。我还没有实现用于读取 DragEnterEvent 上的元数据的部分,因为该表甚至不接受任何类型的删除。

from PyQt5 import QtCore, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(982, 615)
        MainWindow.setAcceptDrops(True)
        MainWindow.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(360, 0, 271, 181))
        self.label.setText("")
        self.label.setObjectName("label")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(10, 200, 701, 331))
        self.tableWidget.setAcceptDrops(True)
        self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.tableWidget.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
        self.tableWidget.setDefaultDropAction(QtCore.Qt.CopyAction)
        self.tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
        self.tableWidget.setShowGrid(False)
        self.tableWidget.setSortingEnabled(True)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.horizontalHeader().setVisible(True)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.setRowCount(6)
        self.tableWidget.setColumnCount(6)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 982, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.titleUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def dragEnterEvent(self, event):
        event.accept()

    def dropEvent(self, event):
        event.accept()

    def titleUi(self, …
Run Code Online (Sandbox Code Playgroud)

python drag-and-drop file qtablewidget pyqt5

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

为 QTableWidget 的列分配不同的宽度

我正在QT Designer中的pyqt5中开发一个小界面,其中包括一个QTableWidget但我想为列分配不同的宽度,我找到了谈论相同内容的主题,但我不知道在哪里插入它们的代码提供一下,不知道是不是版本的问题,我对QT Designer还是比较新的。

我把我提到的问题留下来看看它的价值。

PyQt:如何为各个标头设置不同的标头大小?

PyQt 设置列宽

我的文件结构如下:

app.py:存储应用程序的功能

SGS.py:将.ui文件转换为.py后生成的代码

SGS.ui

我保留了SGS.py 部分,其中生成表头是为了它的价值。

item = self.TableDocs.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "IDsystem"))
item = self.TableDocs.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "IDpeople"))
item = self.TableDocs.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Work"))
item = self.TableDocs.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Hours"))
Run Code Online (Sandbox Code Playgroud)

我还留下了填充表格的代码

result = Cur.execute("SELECT idsystem,IDpeople,work,hours FROM workers")
self.TableDocs.setRowCount(0)

for row_number, row_data in enumerate(result):
    self.TableDocs.insertRow(row_number)
    for column_number, data in enumerate(row_data):
        self.TableDocs.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))
Run Code Online (Sandbox Code Playgroud)

python qt-designer qtablewidget python-3.x pyqt5

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

如何禁用Python中放置在QTableWidget中的Qcombobox的鼠标滚轮事件?

我有 QtDesigner 的 QTablewidget,其中我在其中一列中添加了 Qcombobox。我还添加了事件过滤器来禁用鼠标滚轮事件,但它仅适用于最近添加的组合框。如何使其适用于表列中的所有组合框?

我在这里缺少什么?

谢谢。

QtDesigner 的代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(504, 346)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(10, 10, 481, 301))
        self.tableWidget.setRowCount(4)
        self.tableWidget.setColumnCount(3)
        self.tableWidget.setObjectName("tableWidget")
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        self.tableWidget.verticalHeader().setVisible(False)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Name"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "Sex"))
        item …
Run Code Online (Sandbox Code Playgroud)

qtablewidget qcombobox python-3.x pyqt5

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

Qt - 如何从64开始设置QTableWidget行索引而不是从0开始?

我有128个项目的结构向量.我应该将前64个项目放在第一个QTableWidget中,剩余的64个项目放到第二个QTableWidget中.必须在我的结构向量中显示"索引"数字.那些是Id号码.我使用UI设计器设计了我的ui,我尝试在那里更改QTableWidget第一行号,但它没有用.如何初始化索引以0开头的第一个tablewidget以及索引从64开始的第二个tablewidget.请帮助guyz ...在此先感谢.


请帮我解决这个问题.

我将使用快照图像清楚地解释它.!这里我有2个QTableWidgets.每个表窗口小部件的行ID都为1.第二个小部件的行ID 不应该与1.相反,它必须是65.(因为我有128个项目,前64个项目进入第一个表格,其余64个项目应放在第二个表格中).希望大家都明白我的要求.请帮我.在此输入图像描述

qt4 qtablewidget qt4.7 qt4.8 qmodelindex

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

如何使用PyQt5在QTableWidget中添加和检索项目?

我正在使用Python 3.4和PyQt5。

我是python和Qt的新手。我在使用Qt Designer创建的GUI中使用表时遇到了问题,特别是setItem()and item()函数,我编写了两个函数,每个函数都由一个按钮执行。

' addRow(self)'创建并QTableWidget用中的值填充行QLineEdit

' sumCol(self)'遍历每一行,将一列的每一项添加到列表中,找到总数,然后打印到QLineEdit

我收到以下错误:

AttributeError: 'module' object has no attribute 'QTableWidgetItem'
Run Code Online (Sandbox Code Playgroud)

我的代码:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from test_1 import Ui_MainWindow

class TestApp(Ui_MainWindow):
    def __init__(self, dialog):
        Ui_MainWindow.__init__(self)
        self.setupUi(dialog)

        self.addButton.clicked.connect(self.addRow)
        self.sumColButton.clicked.connect(self.sumCol)

    def addRow(self):
        #Retrieve text from QLineEdit
        x = str(self.x_input.text())
        y = str(self.y_input.text())
        z = str(self.z_input.text())        
        #Create a empty row at bottom of table
        numRows = self.tableWidget.rowCount()
        self.tableWidget.insertRow(numRows)     
        #Add text to the …
Run Code Online (Sandbox Code Playgroud)

python pyqt qtablewidget python-3.x pyqt5

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