2012-08-17 7 views
8

qtablewidget에 버튼처럼 추가 할 방법이 있습니까? 그러나 셀 내의 날짜가 표시되어야합니다. 예를 들어 사용자가 셀을 두 번 클릭 한 경우 버튼과 같은 신호를 보낼 수 있습니까? 감사!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 

테이블 트리거 :

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

답변

14

당신은 몇 가지 질문이 하나에 압연 가지고 ... 짧은 대답은, 그래, 당신은 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) 

하지만 소리가 나지 않습니다. 당신이 실제로 원하는 것.

사용자가 단추를 클릭하는 것처럼 셀 중 하나를 두 번 클릭하는 것처럼 반응하는 것처럼 들리 겠지만 아마도 대화 상자 나 편집기 등을 불러올 수 있습니다.

이런 경우, 당신이 정말로 할 필요가 있으므로처럼 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) 
+0

를 사용자가 클릭 할 때 행이되도록 내가 행을 만들 수있는 방법 강조 표시되고 개별 셀은 표시되지 않습니다. –

+2

do : table.setSelectionBehavior (QTableWidget.SelectRows) –

+0

또한 특정 행을 클릭 할 때 다른 탭으로 리디렉션 할 수 있습니까? 내 질문은 기본적으로 다른 탭, 일종의 HTML 웹 페이지에서 하이퍼 링크 같은 리디렉션 할 수 있습니다. –

관련 문제