【发布时间】:2012-03-20 07:00:59
【问题描述】:
我有 QTableView 使用 QSqlQueryModel(它从 SQLite 获取数据)。
有一个名为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 的问题? (我认为你已经找到了这个帖子:qtforum.org/article/13421/…)
-
是的,我看到了,也许我需要在某处设置 Qt::SizeHintRole 但事实上我是 QStyledItemDelegate 的子类,并且没有 data() 方法可以继承
标签: c++ qt qtableview qitemdelegate