我有QTableView使用QSqlQueryModel(它从SQLite中提取数据)。QStyledItemDelegate的sizeHint方法不用于QTableView行
有一个叫做MiniItemDelegate
的QStyledItemDelegate子类,我用它作为物品的代表。我成立了一个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 2012-03-20 08:16:15
是的,我看到它,也许我需要设置Qt :: SizeHintRole 但事实上im子类化QStyledItemDelegate和没有数据() 方法继承那里 – user63898 2012-03-20 09:14:03