2016-08-19 2 views
1

Это мой код, прежде чемКак выбрать строку QTableWidget с двойным щелчком?

ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); 
ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); 

С этим я могу выбрать строку с только одним щелчком мыши, а двойной щелчок для редактирования ячейки таблицы. Теперь я хочу сделать все наоборот, одним щелчком мыши отредактируйте ячейку и дважды щелкните ее, чтобы выбрать строку.

Для один щелчок, чтобы изменить код должен быть

ui.tableWidget->setEditTriggers(QAbstractItemView::AllEditTriggers); 

Но двойной щелчок, чтобы выбрать строку, я пока не знаю. Вы можете мне помочь?

+0

я уверен, что вы знаете, что вы делаете, но это полное противоположное поведение, чем то, что я видел и делал в настольных, веб-и мобильных приложениях. – UmNyobe

+0

@UmNyobe: Да, я знаю, но это требование. У меня такая же идея, как у вас, но у меня нет выбора. :( – gnase

+0

Я был там :( – UmNyobe

ответ

0

Чтобы поймать нажмите и дважды щелкните вы можете сделать это:

connect(ui.tableWidget, &QTableWidget::cellClicked, this, &cellClicked); 
connect(ui.tableWidget, &QTableWidget::cellDoubleClicked, this, &cellDoubleClicked); 

В этом случае cellClicked и cellDoubleClicked ваши функции. Вы можете сделать что-нибудь в этих функциях:

1) выбрать строку:

void MyClass::cellDoubleClicked(int iRow, int iColumn) 
{ 
    ui.tableWidget->setRangeSelected(QTableWidgetSelectionRange(iRow, 0, iRow, ui.tableWidget->columnCount() - 1), 1); 
} 

2) открытый редактор (используйте QTableWidget::openPersistentEditor)

+0

спасибо за помощь. Не могли бы вы объяснить яснее? Я до сих пор не знаю, как определить 'rowIdx' и определить функцию' cellDoubleClicked'. – gnase

+0

спасибо. Я определил вот так, но была ошибка с '& cellDoubleClicked' в' connect': «недопустимая операция над выражением связанной функции-члена». – gnase

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