2014-12-29 3 views
0

У меня есть QTableView с кнопкой на нем, чтобы обновить выбранную строку кнопку обновления вызывает форму для обновления записи (QDialog в другом классе)PyQt 5 QTableView выбор бар вопрос

После udpating записи я сф сфокусируйтесь на Qtableview, но я не могу найти его , чтобы дать фокус bakc от панели выбора?

Стол возвращается, но мне всегда нужно щелкнуть в таблице, чтобы вернуть панель выбора?

Кто-нибудь знает, как это сделать?

Я хочу также, что бар выделенного помещаются на записи, что только был обновлен

Я tryied это уже с SETFOCUS/activatewindow ... Но ничто не дает мне желаемый результат:

Вот некоторое пример кода:

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 удаляет запись, но и там фокус не засаливание обратно в selectionbar! 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) 

 Смежные вопросы

  • Нет связанных вопросов^_^