У меня есть QTableView с использованием QSqlQueryModel (он извлекает данные из SQLite).QStyledItemDelegate's sizeHint метод не вызван для строки QTableView
Подкласс QStyledItemDelegate под названием MiniItemDelegate
, который я использую в качестве делегата для элементов. Я создал sizeHint() метод, как это:
QSize MiniItemDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
// just for testing...breakpoint shows this line never gets called
return QSize(256,256);
}
я не уверен, почему этот метод не вызывается, когда я бегу следующий код:
m_pMiniItemDelegate = new MiniItemDelegate(this);
ui->PList_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->PList_tableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->PList_tableView->setItemDelegate(m_pMiniItemDelegate);
ui->PList_tableView->setAlternatingRowColors(true);
ui->PList_tableView->setModel(ListMiniSqlModel::instance());
Это также не работает:
ui->PList_tableView->resizeColumnsToContents();
ui->PList_tableView->resizeRowsToContents();
Нор делает это:
QHeaderView* headerView = ui->PList_tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
Выполняет ли QTreeView так, как вы ожидали, и это только проблема с QTableView? (Я так понимаю, вы уже нашли эту тему: http://www.qtforum.org/article/13421/qtableview-how-to-make-rows-size-smaller.html) – HostileFork
Да, я видел это, может быть, я нужно установить Qt :: SizeHintRole где-то , но факт im подкласса QStyledItemDelegate и нет данных() метод наследовать там – user63898