14

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)
4

2 に答える 2

28

いくつかの質問が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)
于 2012-08-17T17:00:48.100 に答える
2

PyQt4で、qtablewidgetにボタンを追加します。

btn= QtGui.QPushButton('Hello')
qtable_name.setCellWidget(0,0, btn) # qtable_name is your qtablewidget name
于 2019-08-01T15:18:28.647 に答える