Hi, just wanted to say a big thank you for solving this.
It now takes 0 seconds to display 30,000 rows in the TableView, by subclassing an AbstractTableModel.
I am now starting to understand the power of a MVC design!
I never thought it would work but wow, its fast.
Below is some code in case it helps someone to do the same:
int ResultsModel
::rowCount(const QModelIndex &parent
) const {
filteredResults.size();
}
int ResultsModel
::columnCount(const QModelIndex &parent
) const {
return 13;
}
{
if (!index.isValid()) {
}
if (index.row() >= filteredResults.size()) {
}
if (index.column() >= 13) {
}
if (role == Qt::DisplayRole) {
int db = mainBoard->filteredResults[index.row()]->dbIndex;
int game = mainBoard->filteredResults[index.row()]->gameIndex;
boost::shared_ptr<Game> gamePtr = mainWindow_->dbManager_->databases[db]->database->Games[game];
switch (index.column()) {
case 0 : {
data = (mainWindow_->dbManager_->databases[db]->name).c_str();
return data;
}
case 1 : {
data = (gamePtr->getPlayerW()).c_str();
return data;
break;
}
case 2 : {
data = (gamePtr->getPlayerB()).c_str();
return data;
break;
}
// ETC ETC
}
}
// else
}
int ResultsModel::rowCount(const QModelIndex &parent) const
{
filteredResults.size();
}
int ResultsModel::columnCount(const QModelIndex &parent) const
{
return 13;
}
QVariant ResultsModel::data(const QModelIndex &index, int role) const
{
QVariant data;
if (!index.isValid()) {
return QVariant();
}
if (index.row() >= filteredResults.size()) {
return QVariant();
}
if (index.column() >= 13) {
return QVariant();
}
if (role == Qt::DisplayRole) {
int db = mainBoard->filteredResults[index.row()]->dbIndex;
int game = mainBoard->filteredResults[index.row()]->gameIndex;
boost::shared_ptr<Game> gamePtr = mainWindow_->dbManager_->databases[db]->database->Games[game];
switch (index.column()) {
case 0 : {
data = (mainWindow_->dbManager_->databases[db]->name).c_str();
return data;
}
case 1 : {
data = (gamePtr->getPlayerW()).c_str();
return data;
break;
}
case 2 : {
data = (gamePtr->getPlayerB()).c_str();
return data;
break;
}
// ETC ETC
}
}
// else
return QVariant();
}
To copy to clipboard, switch view to plain text mode
Bookmarks