Добавление виджетов в qtablewidget pyqt

есть ли в любом случае добавить как кнопку в 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

таблицы триггер:

self.table1.itemDoubleClicked.connect(self.editItem)

1 ответов


у вас несколько вопросов в одном флаконе...короткий ответ, да, вы можете добавить кнопку в 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)

но это не похоже на то, что вы на самом деле хотите.

похоже, вы хотите реагировать на двойной щелчок пользователя по одной из ваших ячеек, как будто они нажали кнопку, предположительно, чтобы вызвать диалог или редактор или что-то еще.

Если это так, все вы действительно нужно сделать, это подключиться к сигналу itemDoubleClicked от QTableWidget, например:

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)