1
我想阻止用戶輸入相同的數據到我的模型中,這是從QAbstractTableModel subclassed。QTableView ::編輯(常量QModelIndex&索引)失敗
bool MyModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
bool result = false;
...
// Test if my model already has the same data
result = findItem(value.toString()) != -1;
...
if (result)
emit(dataChanged(index, index);
else
emit (dataInvalid(index));
return result;
}
現在我應該抓住的信號,並把我的表視圖(哪種類型QTableView中)回編輯狀態:
void MyWindow::dataInvalid(const QModelIndex &index)
{
myTableView->edit(index);
}
但是當我運行我的應用程序在控制檯得到消息和QTableView中不會變成編輯狀態:
edit: edit failed
我在做什麼錯? 非常感謝您提前。
我認爲它失敗了,因爲當你在你的視圖上調用edit()時,它仍然處於編輯模式,並且setData()函數還沒有退出。 – vahancho
非常感謝,@vahancho! 當連接到'dataInvalid'信號時,我添加了'Qt :: QueuedConnection',它工作正常! 問題是因爲當我調用'QTableView :: edit(const QModelIndex&index)'時,'QTableView'仍然在'QAbstractItemView :: EditState'中**。 謝謝! – pau