2014-12-29 2 views
0

내가 업데이트 버튼을 기록 i 서 고브을 udpating 후 (다른 클래스 인 QDialog를) 기록을 업데이트 할 양식PyQt는 5 QTableView 선택 바 문제

를 호출 선택한 행을 업데이트하는 데에 버튼으로 QTableView이 다시 Qtableview로 초점을 맞 춥니 다. 그러나 찾을 수 없습니다. 선택 표시 줄에 초점을 맞 춥니 다?

테이블이 돌아 왔지만 항상 테이블에서 클릭하여 선택 표시 줄을 다시 가져와야합니까?

누구나 어떻게 할 수 있는지 알고 있습니까?

다음

일부입니다 다음 selction 줄이 내가 setFocus void 현재/activatewindow로 이미 tryied

, 갱신 된 기록에 배치 ...하지만 아무것도 나에게 원하는 결과를 제공하지 않습니다 것을

나는 또한 원하는 예제 코드 :

class KL_browse(QDialog, ui_kl_browse.Ui_kl_browse):  
    def __init__(self): 
     super(KL_browse, self).__init__() 
     # query = QSqlQuery() 

     # query.exec_("""SELECT * FROM klanten ORDER BY klantnaam""") 

     self.setupUi(self) 

     self.model = QSqlTableModel(self) 
     self.model.setTable("KLANTEN") 
     # self.model.setSort(1, Qt.AscendingOrder) 
     self.model.select() 
     self.tableView.setModel(self.model) 
     self.tableView.setSelectionMode(QTableView.SingleSelection) 
     self.tableView.setSelectionBehavior(QTableView.SelectRows) 
    # self.view.setColumnHidden(ID, True) 
    # index = self.tableView.model().index(0, 1) 
    # self.tableView.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate)  

     self.tableView.horizontalHeader().setSectionsMovable(True) 
     self.tableView.horizontalHeader().setDragEnabled(True) 
     self.tableView.horizontalHeader().setDragDropMode(QAbstractItemView.InternalMove) 
     self.tableView.horizontalHeader().setSortIndicator(1,0) 
     self.tableView.selectRow(0) 
     self.tableView.selectColumn(1) 

     index = self.tableView.model().index(0, 1) 
     self.tableView.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate)  

    # Volgende code is om de actie op knoppen en dergelijke op te vangen 
     self.add_button.clicked.connect(self.test_win_start) 
     self.Del_button.clicked.connect(self.del_record) 

    def del_record(self): 
     index = self.tableView.currentIndex() 
     self.model.removeRow(index.row()) 
     self.model.submitAll() 
     self.model.select() 
     self.tableView.activateWindow() 
     self.tableView.setFocus() 

    def test_win_start(self): 
     self.test_win = Test_win() 
     self.test_win.exec_() 
     self.model.select() 
     self.tableView.activateWindow() 

del_record는 레코드를 삭제하지만 포커스도 선택 표시 줄로 돌아 오지 않습니다! test_win_start 업데이트 양식을 호출

+1

당신은 해결 되었습니까를 [이] (http://stackoverflow.com/questions/27668721/pyqt-5-qtableview-specify-standard-search-field)? 외관상으로는,이 수정은 지금이 부호에서이다, 그러나 그 때 응답을 선정하지 않기 위하여 :) 더 중요하게, 당신의 포맷은 부러진다. 코드를 선택하고 ctrl-k를 눌러 자동으로 서식을 지정하십시오. – lpapp

답변

1

나는 문제가 그냥이 두 라인 from my other answer 붙여 있다고 생각 :

index = self.tableView.model().index(0, 1) 
self.tableView.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate) 

이 검색 필드를 변경하는 것을 의미했지만, 다시 선택을 제공하는 것은 아닙니다 너에게.

이렇게하려면 매우 비슷하지만 다른 메커니즘이 필요합니다. 즉, 백그라운드 데이터 모델이 아닌보기의 현재 색인을 변경하십시오. 여기에 작업 마땅 코드 진행됩니다

index = self.tableView.model().index(0, 1) 
self.tableView.setCurrentIndex(index)