从QLineEdit获取文本以更新QTableView中的单元格,可以按照以下步骤进行操作:
以下是一个示例代码:
# 导入所需的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QLineEdit, QTableView, QPushButton
from PyQt5.QtCore import Qt, QAbstractTableModel
# 自定义TableModel
class TableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self.data = data
def rowCount(self, parent):
return len(self.data)
def columnCount(self, parent):
return len(self.data[0])
def data(self, index, role):
if role == Qt.DisplayRole:
row = index.row()
column = index.column()
return str(self.data[row][column])
def setData(self, index, value, role):
if role == Qt.EditRole:
row = index.row()
column = index.column()
self.data[row][column] = value
self.dataChanged.emit(index, index)
return True
return False
# 主窗口类
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建布局
layout = QVBoxLayout()
# 创建QLineEdit和QTableView
self.line_edit = QLineEdit()
self.table_view = QTableView()
# 创建模型并设置给QTableView
self.model = TableModel([['', ''], ['', '']])
self.table_view.setModel(self.model)
# 将QLineEdit的textChanged信号与槽函数关联
self.line_edit.textChanged.connect(self.updateCell)
# 将QLineEdit和QTableView添加到布局中
layout.addWidget(self.line_edit)
layout.addWidget(self.table_view)
# 创建QWidget作为中心窗口,并将布局设置给它
widget = QWidget()
widget.setLayout(layout)
# 设置中心窗口
self.setCentralWidget(widget)
# 槽函数,用于更新QTableView中的单元格
def updateCell(self, text):
# 获取选中的单元格的索引
indexes = self.table_view.selectedIndexes()
if indexes:
index = indexes[0] # 这里只处理第一个选中的单元格
# 调用模型的setData方法更新单元格数据
self.model.setData(index, text, Qt.EditRole)
# 刷新QTableView
self.table_view.update()
# 创建QApplication对象和主窗口实例,并运行应用程序
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在这个示例中,我们创建了一个带有一个QLineEdit和一个QTableView的窗口。通过文本框输入内容时,我们将其更新到QTableView中选中的单元格中。TableModel是自定义的QAbstractTableModel子类,用于提供QTableView的数据模型。注意,我们使用setData()方法来更新单元格数据,并使用update()方法刷新QTableView。
领取专属 10元无门槛券
手把手带您无忧上云