Добрый день, есть такой вопрос:
надо реализовать нестандартное красивое отображение ячеек таблицы, в один столбец.
Лиха беда начало =) изначально реализовал как QTableWidget + QLabel в качестве виджета отображения =) все получилось, но .... речь идет об объемах данных в сотни тысяч строк.... ессесно это все начало тормозить даже на сотнях записей =(
начал ковырять дальше, получилось что то типа:
tvSheet = new QTableView;
setCentralWidget(tvSheet);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("ad.db");
if(!db.open()){
qDebug() << "Error near DB";
}
model = new QSqlQueryModel();
model->setQuery("SELECT '<b>' || date || '</b>' || text FROM info;");
qDebug() << model->columnCount();
qDebug() << model->rowCount();
tvSheet->setItemDelegate(new HtmlDelegate);
tvSheet->setModel(model);
tvSheet->verticalHeader()->hide();
tvSheet->horizontalHeader()->hide();
tvSheet->resizeColumnsToContents();
tvSheet->resizeRowsToContents();
в итоге получил проблемы с размерами ячейки.
Проблема номер один: при дозагрузке данных из модели некорректно отрабатывает sizeHint ?! Почему ?! то есть для первых 256 строк все отлично. но как только загружается следующая пачка... данные налазят друг надруга и все приехали =( такое ощущение что sizeHint просто не существует для этих записей.
Проблема номер два: хочется сделать отступ в 5 пикселей от каждой стороны виджета. подскажите куда копать ?
код sizeHint:
QTextDocument td;
td.setHtml(index.data(Qt::DisplayRole).toString());
td.setTextWidth(qApp->desktop()->width());
return td.documentLayout()->documentSize().toSize();