2012-08-17 71 views
8

¿Hay alguna forma de agregar como un botón en qtablewidget? Pero la fecha dentro de la célula todavía tendría que mostrarse, por ejemplo, si un usuario hace doble clic en una celda, ¿podría enviar una señal como un botón? ¡Gracias!Agregar widgets a qtablewidget pyqt

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 

tabla de eventos:

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

Respuesta

14

Usted tiene un par de preguntas, todo en uno ... respuesta corta, sí, se puede añadir un botón a una QTableWidget - Puede agregar cualquier widget al widget de tabla llamando a 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) 

Pero eso no suena l Ike lo que realmente quieres.

Parece que quiere reaccionar ante un usuario al hacer doble clic en una de sus celdas, como si hubiera presionado un botón, presumiblemente para abrir un cuadro de diálogo o editor o algo.

Si ese es el caso, lo único que tiene que hacer es conectarse a la señal itemDoubleClicked del QTableWidget, así:

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) 
+0

¿Cómo puedo hacer la fila para que cuando el usuario hace clic en la fila es resaltado y no la celda individual. –

+2

do: table.setSelectionBehavior (QTableWidget.SelectRows) –

+0

Además, ¿hay alguna manera de que pueda redirigir a una pestaña diferente cuando se hace clic en una determinada fila? Mi pregunta es ¿puedo básicamente redirigir a una pestaña diferente, algo así como un hipervínculo en una página web html. –

Cuestiones relacionadas