我正在潜入PyQt,并且遇到了一些麻烦。 SLOT('insertColumn()')在连接到GUI中的按钮时不执行任何操作。 SLOT('clear()')完美工作,并且insertColumn()在绑定之外工作。 insertColumn()在Qt文档中被列为公共插槽,所以我被卡住了。为什么SLOT('insertColumn()')在PyQt绑定中失败?
下面的代码:
class MainWindow(QMainWindow):
def __init__(self, *args):
QMainWindow.__init__(self, *args)
# Table
self.tableWidget = QTableWidget(6, columnCount, self);
x = 0
for x in range(0, columnCount):
self.tableWidget.setColumnWidth(x, 30)
for x in range(0, 6):
self.tableWidget.setRowHeight(x, 24)
# Window geometery and layout
self.resize(800, 600)
self.setWindowTitle('PyTab')
self.setCentralWidget(self.tableWidget)
# Menu and toolbar actions
self.MenuExit = QAction(QIcon('exit.png'), 'Exit', self)
self.MenuExit.setShortcut('Ctrl+Q')
self.connect(self.MenuExit, SIGNAL('triggered()'), SLOT('close()'))
self.MenuAddColumn = QAction(QIcon('clear.png'), 'Add Column', self)
self.MenuAddColumn.setShortcut('Ctrl+N')
#This line works:
self.tableWidget.insertColumn(2)
# I'm not sure why this line isn't working:
self.connect(self.MenuAddColumn, SIGNAL('triggered()'), self.tableWidget, SLOT('insertColumn(2)'))
我试着定义QTableWidget的为tableWidget和self.tableWidget,但这并没有改变任何东西。
有谁知道是什么原因造成的?
下面是最终代码:
def add_column(self):
tableWidget.insertColumn(1)
self.MenuAddColumn.triggered.connect(add_column)
它使用在this SO question描述的新.connect()语法。再次感谢!
什么是创建一个插槽的语法?是否与定义函数相同? – speedofmac 2011-01-27 17:41:44