私はQtのModel-ViewをAddressBookの例で学習しています。 https://doc.qt.io/qt-5/qtwidgets-itemviews-addressbook-example.html そして私は面白い何かを見つける。このコードは、QAbstractTableModelで使用されるTableModelクラスを構築します。オーバーライドsetData関数では、dataChangedシグナルを送出します。しかし、removeRows/insertRowsにはシグナルは送出されません。次に、どのようにこれらの機能がビューを更新することができます。機能のQtシグナルがアドレス帳に出力されます
bool TableModel::removeRows(int position, int rows, const QModelIndex &index)
{
Q_UNUSED(index);
beginRemoveRows(QModelIndex(), position, position + rows - 1);
for (int row = 0; row < rows; ++row) {
listOfPairs.removeAt(position);
}
endRemoveRows();
return true;
}
bool TableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (index.isValid() && role == Qt::EditRole) {
int row = index.row();
QPair<QString, QString> p = listOfPairs.value(row);
if (index.column() == 0)
p.first = value.toString();
else if (index.column() == 1)
p.second = value.toString();
else
return false;
listOfPairs.replace(row, p);
emit(dataChanged(index, index));
return true;
}
return false;
}
ありがとうございました。私はちょうど新しい質問を投稿します、あなたは私を助けることができますか? https://stackoverflow.com/questions/46375673/how-can-realize-my-own-memory-viewer-by-qt –