将小部件添加到qtablewidget pyqt

10 python pyqt qtablewidget

无论如何在qtablewidget中添加像按钮一样?但是单元格中的日期必须显示,例如,如果用户双击一个单元格,我可以像按钮一样发送信号吗?谢谢!

edititem():

def editItem(self,clicked):
    if clicked.row() == 0:
        #go to tab1
    if clicked.row() == 1:
        #go to tab1
    if clicked.row() == 2:
        #go to tab1
    if clicked.row() == 3:
        #go to tab1
Run Code Online (Sandbox Code Playgroud)

表触发器:

self.table1.itemDoubleClicked.connect(self.editItem)
Run Code Online (Sandbox Code Playgroud)

Eri*_*ser 18

你有几个问题归成一个......简短的回答,是的,你可以向QTableWidget添加一个按钮 - 你可以通过调用setCellWidget将任何小部件添加到表小部件:

# initialize a table somehow
table = QTableWidget(parent)
table.setRowCount(1)
table.setColumnCount(1)

# create an cell widget
btn = QPushButton(table)
btn.setText('12/1/12')
table.setCellWidget(0, 0, btn)
Run Code Online (Sandbox Code Playgroud)

但这听起来并不像你真正想要的那样.

听起来你想对用户双击你的一个单元格做出反应,好像他们点击了一个按钮,可能是为了调出一个对话框或编辑器.

如果是这种情况,您真正需要做的就是从QTableWidget连接到itemDoubleClicked信号,如下所示:

def editItem(item):
    print 'editing', item.text()    

# initialize a table widget somehow
table = QTableWidget(parent)
table.setRowCount(1)
table.setColumnCount(1)

# create an item
item = QTableWidgetItem('12/1/12')
table.setItem(0, 0, item)

# if you don't want to allow in-table editing, either disable the table like:
table.setEditTriggers( QTableWidget.NoEditTriggers )

# or specifically for this item
item.setFlags( item.flags() ^ Qt.ItemIsEditable)

# create a connection to the double click event
table.itemDoubleClicked.connect(editItem)
Run Code Online (Sandbox Code Playgroud)

  • do:table.setSelectionBehavior(QTableWidget.SelectRows) (4认同)
  • 你在错误的小部件上设置它 - QWidget没有该属性.我假设你是在尝试设置一个标签,然后在某个地方你有一个Tab Widget - 这就是你必须设置索引值的地方.http://qt-project.org/doc/qt-4.8/qtabwidget.html没有违法,但我已经回答了你的问题,你现在是在一个新的问题 - 我会发布,如果你仍然有麻烦更多的代码示例,而不是继续推动这个新主题. (2认同)