如果我创建一个新项目并将其插入/设置到已有项目的QTableWidgetItem单元格中,则前一个项目是否会被删除或者是否会出现内存泄漏?QTableWidget我是否需要检索现有项目并更改其属性?
我有子类 qstyleditemdelegate
在 col==1 和 col==2 中,我创建了 Qdoublespinxbox,我想发出我的 valuechanged
Qdoublespinxbox,计算小计 ( col1 * col2 )
意思是:在代表之外
每次 Qdoublespinxbox 的值发生变化时,我都会更新值小计
QWidget是否可以在 上显示自定义字符串而QHeaderView不仅仅是通用字符串?
另外,是否可以改变唯一的高度horizontalHeaderItem?当我这样做时它崩溃了:
(ui->myTable->horizontalHeaderItem(0))->setSizeHint(QSize(200,300));
Run Code Online (Sandbox Code Playgroud) 我真的已经尝试了一切来解决我的问题,但它不起作用。这是我将组合框放入表格每一行的简单代码。它实际上适用于 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) 我在 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) 我正在尝试创建一个表格小部件,我可以在其中删除音频文件并用文件名、文件大小等填充表格。我的代码如下。我还没有实现用于读取 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) 我正在QT Designer中的pyqt5中开发一个小界面,其中包括一个QTableWidget但我想为列分配不同的宽度,我找到了谈论相同内容的主题,但我不知道在哪里插入它们的代码提供一下,不知道是不是版本的问题,我对QT Designer还是比较新的。
我把我提到的问题留下来看看它的价值。
我的文件结构如下:
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) 我有 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) 我有128个项目的结构向量.我应该将前64个项目放在第一个QTableWidget中,剩余的64个项目放到第二个QTableWidget中.必须在我的结构向量中显示"索引"数字.那些是Id号码.我使用UI设计器设计了我的ui,我尝试在那里更改QTableWidget第一行号,但它没有用.如何初始化索引以0开头的第一个tablewidget以及索引从64开始的第二个tablewidget.请帮助guyz ...在此先感谢.
我将使用快照图像清楚地解释它.!这里我有2个QTableWidgets.每个表窗口小部件的行ID都为1.第二个小部件的行ID 不应该与1.相反,它必须是65.(因为我有128个项目,前64个项目进入第一个表格,其余64个项目应放在第二个表格中).希望大家都明白我的要求.请帮我.
我正在使用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) qtablewidget ×10
pyqt5 ×6
python ×5
qt ×4
python-3.x ×3
pyqt ×2
qcombobox ×2
qt4 ×2
qt5 ×2
c++ ×1
emit ×1
file ×1
qheaderview ×1
qmodelindex ×1
qt-designer ×1
qt4.7 ×1
qt4.8 ×1