いくつかの質問が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)
しかし、それはあなたが実際に望んでいるもののようには聞こえません。
ユーザーがセルの1つをダブルクリックしたとき、ボタンをクリックしたかのように反応したいと思うようです。おそらく、ダイアログやエディターなどを表示するためです。
その場合、実際に行う必要があるのは、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)