qt中双击tablewidget的指定单元格,弹出新的窗口
时间: 2023-12-10 20:37:21 浏览: 218
用qt利用tablewidget等控件
可以通过在双击事件中获取所点击单元格的行列信息,然后根据需要弹出一个新的窗口。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDialog, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table = QTableWidget(self)
self.table.setRowCount(3)
self.table.setColumnCount(2)
self.table.setItem(0, 0, QTableWidgetItem("cell(0,0)"))
self.table.setItem(0, 1, QTableWidgetItem("cell(0,1)"))
self.table.setItem(1, 0, QTableWidgetItem("cell(1,0)"))
self.table.setItem(1, 1, QTableWidgetItem("cell(1,1)"))
self.table.setItem(2, 0, QTableWidgetItem("cell(2,0)"))
self.table.setItem(2, 1, QTableWidgetItem("cell(2,1)"))
self.setCentralWidget(self.table)
# 绑定双击事件
self.table.cellDoubleClicked.connect(self.on_cell_double_clicked)
def on_cell_double_clicked(self, row, column):
if row == 1 and column == 1: # 只处理(1,1)单元格的双击事件
dialog = QDialog(self)
layout = QVBoxLayout(dialog)
layout.addWidget(QLabel("This is a new window!"))
dialog.exec_()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的代码中,我们创建了一个包含 3 行 2 列的表格,并在其中填充了一些数据。然后我们绑定了 `cellDoubleClicked` 事件,当用户双击某个单元格时,会调用 `on_cell_double_clicked` 函数。在该函数中,我们检查所点击的单元格是否为 (1,1),如果是,就弹出一个新的窗口来显示一些信息。这里使用了 `QDialog` 来创建一个模态对话框,当用户关闭该对话框时,程序会继续运行。
阅读全文