diff --git a/src/channelinfomodel.cpp b/src/channelinfomodel.cpp --- a/src/channelinfomodel.cpp +++ b/src/channelinfomodel.cpp @@ -146,6 +146,16 @@ void ChannelInfoModel::setNumOfChannels( { if (number == _numOfChannels) return; + bool isInserting = number > _numOfChannels; + if (isInserting) + { + beginInsertRows(QModelIndex(), _numOfChannels, number-1); + } + else + { + beginRemoveRows(QModelIndex(), number, _numOfChannels-1); + } + // we create channel info but never remove channel info to // remember user entered info if ((int) number > infos.length()) @@ -168,4 +178,13 @@ void ChannelInfoModel::setNumOfChannels( } _numOfChannels = number; + + if (isInserting) + { + endInsertRows(); + } + else + { + endRemoveRows(); + } } diff --git a/src/main.cpp b/src/main.cpp --- a/src/main.cpp +++ b/src/main.cpp @@ -55,12 +55,16 @@ int main(int argc, char *argv[]) w.show(); // test code - ChannelInfoModel cim(5, &a); + ChannelInfoModel cim(10, &a); QTableView tv; tv.setModel(&cim); tv.show(); + // cim.setNumOfChannels(3); + // cim.setNumOfChannels(10); + // cim.setNumOfChannels(7); + return a.exec(); }