AttributeError: 'QComboBox' object has no attribute 'clone'
时间: 2023-06-21 22:21:47 浏览: 177
抱歉,clone()方法是在QComboBox的Qt5.15版本中引入的新方法,如果您的版本比较旧可能会出现该错误。
您可以使用QComboBox的copy()方法来替代clone()方法,copy()方法可以复制QComboBox对象并返回一个新的对象。下面是修改后的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QComboBox
from PyQt5.QtCore import Qt
class Example(QTableWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Example')
self.setRowCount(4)
self.setColumnCount(2)
# 在第一列中添加下拉框控件
combo1 = QComboBox()
combo1.addItems(['Option 1', 'Option 2', 'Option 3'])
for i in range(4):
self.setCellWidget(i, 0, combo1.copy())
# 在第二列中添加下拉框控件
combo2 = QComboBox()
combo2.addItems(['Option A', 'Option B', 'Option C'])
for i in range(4):
self.setCellWidget(i, 1, combo2.copy())
# 连接槽函数
for i in range(4):
combo2 = self.cellWidget(i, 1)
combo2.currentIndexChanged.connect(self.onCombo2IndexChanged)
self.show()
def onCombo2IndexChanged(self, index):
# 获取被选中的值
combo2 = self.sender()
selectedValue = combo2.currentText()
# 将选中的值补充到第一列的下拉框控件中
for i in range(4):
combo1 = self.cellWidget(i, 0)
if combo1.currentText() == '':
combo1.setCurrentIndex(combo1.findText(selectedValue))
break
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
```
在这个示例中,我们使用了QComboBox的copy()方法来复制QComboBox对象。其余部分的实现与之前的示例代码相同。
阅读全文