2012-06-06 2 views
0

Я подклассифицирую QAbstractTableModel, чтобы показать список высоких результатов в представлении таблицы. Мои данные не отображаются. Я обнаружил, что метод данных не вызывается. headerData, rowCount, columnCount вызываются и работают нормально. Мой вопрос заключается в том, как отлаживать эту проблему, кто-нибудь знает, где в исходном коде qt вставить точки останова для отладки для этой ошибки?метод отладки данных qabstracttablemodel

+0

Вы испускаете 'dataChanged (....)' или 'rowsInserted (....)' и т. Д., Чтобы уведомить мнение о том, что модель отличается? – cmannett85

+0

Также проверьте, что вы действительно переопределяете функцию данных (такие вещи, как функция 'const'ness, легко упускать из вида и могут вызвать попытку переопределить виртуальную функцию для отказа) – Chris

+0

Я не излучаю никакого сигнала. Мои данные не меняются вообще. Я строю всю модель, и я передаю ее в представление таблицы с установленной моделью. Должен ли я выполнять некоторую инициализацию для просмотра данных? – Cristi

ответ

0

Я нашел проблему. Это было так, как я строил модель. Я делал

ScoreTableModel PSTM (0, pscores) ;, где pscores является QList < HighScore> * scoresTableView-> setModel (& PSTM);

Версия, которая в настоящее время работает: m_pScoreTableModel = new ScoreTableModel (0, pscores); scoresTableView-> setModel (m_pScoreTableModel); , где m_pScoreTableModel - это показатель оценкиTableModel *

Кто-нибудь есть идеи, почему у меня было это странное поведение? Может быть, из-за этого QList < HighScore> *, который на самом деле является содержимым отображаемой таблицы?

+0

Это мертво просто. Первый подход создал модель в стеке. Как только вы вышли из этой области, модель была уничтожена. Вы владеете моделью, представление делает * не * собственной моделью. Если вы уничтожите модель, у представления не будет ничего, чтобы показать! –

Смежные вопросы