0
我有一个表格上而QListView和一个QTextEdit,我想,让他们一起工作,如下连接:如果一个复选框被选中,对应项的而QListView的指数应显示在QTextEdit中;如果复选框未选中,则应该从QTextEdit中删除该值。索引应该累积显示,用一个字符(比如逗号)分隔,例如0,1,3。相反,如果在QTextEdit中键入一个值,则应该自动检查相应的复选框(如果输入的值不对应于QListView中的任何索引,则应该自动检查该复选框(如果没有,则不设置)。PyQt的:而QListView与QTexEdit
我试图通过一个处理程序连接到而QListView的点击事件,如下赶选择checboxes的指标:
<del>@QtCore.pyqtSlot(QtCore.QModelIndex)
def onclick(self, index):
editbox.setText(str(index.row()))</del>
但得到错误信息:“NameError:全局名称'自我'没有定义“。
任何提示?预先感谢您提供的任何帮助!
这里是我完整的测试代码:
编辑:我改变了下面的代码与事件处理程序妥善处理。
import sys
from PyQt4 import Qt, QtCore, QtGui
class MainWindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
model = QtGui.QStandardItemModel()
for n in range(10):
item = QtGui.QStandardItem('Item %s' % n)
item.setCheckState(QtCore.Qt.Unchecked)
item.setCheckable(True)
model.appendRow(item)
listview = QtGui.QListView()
listview.setModel(model)
listview.clicked.connect(self.onclick)
self.editbox = QtGui.QTextEdit()
self.editbox.textChanged.connect(self.onchange)
grid = QtGui.QGridLayout()
grid.setRowStretch(0, 6)
grid.setRowStretch(1, 4)
grid.addWidget(listview)
grid.setSpacing(2)
grid.addWidget(self.editbox)
self.setLayout(grid)
self.setGeometry(300, 150, 350, 300)
self.setWindowTitle("Example")
self.show()
#@QtCore.pyqtSlot(QtCore.QModelIndex)
def onclick(self, index):
self.editbox.append(str(index.row()))
def onchange(self):
print "text in edit box changed"
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mw = MainWindow()
sys.exit(app.exec_())