我想知道用戶何時完成編輯QTableView項目,所以我檢查了所有可用的信號,但是我只發現了在編輯之前會發出的信號。什麼是QTableView項目的「編輯完成」信號?
那麼,我現在該怎麼辦?
運行的Qt 4.8.4
我想知道用戶何時完成編輯QTableView項目,所以我檢查了所有可用的信號,但是我只發現了在編輯之前會發出的信號。什麼是QTableView項目的「編輯完成」信號?
那麼,我現在該怎麼辦?
運行的Qt 4.8.4
由於您的QTableView中會附上一個模型,連接到它的信號,
如 void QStandardItemModel::itemChanged (QStandardItem * item) [signal]
,或者更一般地說:
void QAbstractItemModel::dataChanged (const QModelIndex & topLeft, const QModelIndex & bottomRight)
您也可以連接到selection model信號。
通常情況下,當你完成一個項目的編輯,焦點變成下一個,所以selectionmodel將激發 currentChanged但這不一般。
關於完成編輯的真實信號只能在QAbstractItemDelegate
中找到。信號是closeEditor()
。如果用戶不更改單元格中的任何內容,則模型中的所有其他信號都不起作用,但編輯完成後每次都會關閉委託。正如doc所說:
當用戶使用指定的編輯器完成編輯項目 時發出此信號。
該提示爲委託人提供了一種方式,可以在編輯完成後影響模型 和視圖的行爲方式。它向這些 組件指示接下來應該執行什麼動作來爲用戶提供舒適的編輯體驗。例如,如果指定了 EditNextItem,則視圖應使用委託在模型中的下一個項目上打開 編輯器。
用法:
connect(ui->tableView->itemDelegate(),SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),SLOT(someSlot()));