pyqt如何给table view增加输入框
时间: 2023-07-19 12:36:56 浏览: 68
要在 PyQt 的 TableView 中添加输入框,可以使用 QItemDelegate 类。以下是一个简单的示例代码:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QTableView, QWidget, QVBoxLayout, QItemDelegate, QLineEdit
class LineEditDelegate(QItemDelegate):
def createEditor(self, parent, option, index):
editor = QLineEdit(parent)
editor.setAlignment(Qt.AlignCenter)
return editor
def setEditorData(self, editor, index):
value = index.model().data(index, Qt.EditRole)
editor.setText(str(value))
def setModelData(self, editor, model, index):
value = editor.text()
model.setData(index, value, Qt.EditRole)
app = QApplication([])
window = QWidget()
# 创建一个 TableView
table_view = QTableView()
# 创建一个数据模型
model = QStandardItemModel(4, 3)
model.setHorizontalHeaderLabels(['Column 1', 'Column 2', 'Column 3'])
# 将数据模型设置为 TableView 的模型
table_view.setModel(model)
# 将自定义的委托对象设置为 TableView 的委托
delegate = LineEditDelegate()
table_view.setItemDelegate(delegate)
# 将 TableView 添加到窗口中
layout = QVBoxLayout()
layout.addWidget(table_view)
window.setLayout(layout)
window.show()
app.exec()
```
上面的代码创建了一个应用程序和一个窗口,并在窗口中创建了一个 TableView,然后将其设置为一个数据模型的模型。接下来,创建了一个自定义的委托对象 LineEditDelegate,并将其设置为 TableView 的委托。这个委托对象会在需要编辑单元格时创建一个 QLineEdit 编辑框,然后在编辑完成后将编辑框中的值设置回数据模型中。
运行程序后,应该会看到一个带有输入框的 TableView。你可以根据自己的需要修改表格的大小、数据以及委托对象的属性。
希望这可以帮助到你!