【发布时间】:2015-12-24 04:23:52
【问题描述】:
我在应用程序中有一个QTableView 宽度QAbstractTableModel,我想让每列具有不同的宽度,并带有调整大小选项ui->tableView->horizontalHeader()->setSectionResizeMode (QHeaderView::Stretch);
在我的模型中我这样做:
class rangeModel : public QAbstractTableModel {
//other code .......
QVariant rangeModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (orientation != Qt::Horizontal)
return QVariant();
if (role != Qt::DisplayRole && role != Qt::SizeHintRole)
return QVariant();
if(role == Qt::SizeHintRole)
{
switch (section) {
case 0: return QSize(58, 20);
case 1: return QSize(58, 20);
case 2: return QSize(58, 20);
case 3: return QSize(228, 20);
}
}
switch (section) {
case 0: return "PREFIXMIN";
case 1: return "PREFIXMAX";
case 2: return "VALUE";
case 3: return "PROGRESS BAR";
default: return QVariant();
}
}
所以我希望我的行大小不同,但它不会发生,视图由于某种原因忽略了QSizeHint,而且即使没有QHeaderView::Stretch 选项它也不起作用。如何使列和标题的大小不同?
【问题讨论】:
-
我怀疑,你可以用 QTableView 做到这一点,但你可以为此编写自己的视图。你可以通过继承qabstractitemview来编写自己的视图
-
@sanjay 所以我需要继承 qabstractitemview 并重新实现
QAbstractItemView::sizeHintForColumn(int column) const并返回我想要的大小?或者这还不够,我需要重新实现resizeEvent(QResizeEvent *event)?
标签: c++ qt size qtableview qabstracttablemodel