2012-08-17 20 views
8

Czy mimo to można dodać jak przycisk w qtablewidget? Ale data w komórce musiałaby być wyświetlana, na przykład jeśli użytkownik kliknąłby dwukrotnie komórkę, czy mógłbym wysłać sygnał podobny do przycisku? Dzięki!Dodawanie widgetów do 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 

stół wyzwalania:

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

Odpowiedz

14

masz kilka pytań w jednej osobie ... krótka odpowiedź, tak, można dodać przycisk do QTableWidget - możesz dodać dowolny widget do widżetu tabeli, dzwoniąc do 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) 

Ale to nie brzmi l Ike, czego tak naprawdę chcesz.

Wygląda na to, że chcesz zareagować na dwukrotne kliknięcie jednego z komórek przez użytkownika, tak jakby kliknął przycisk, prawdopodobnie w celu wyświetlenia okna dialogowego lub edytora lub czegoś podobnego.

Jeśli tak jest, wszystko co naprawdę trzeba zrobić, to podłączyć do sygnału itemDoubleClicked z QTableWidget, tak:

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

Jak mogę dokonać wiersz tak, że gdy użytkownik kliknie wiersz jest podświetlona, ​​a nie pojedyncza komórka. –

+2

do: table.setSelectionBehavior (QTableWidget.SelectRows) –

+0

Czy istnieje również możliwość przekierowania do innej karty po kliknięciu określonego wiersza? Moje pytanie brzmi: czy mogę zasadniczo przekierować do innej karty, tak jak hiperłącze na stronie HTML. –

Powiązane problemy