我在应用程序中的QTableView
宽度QAbstractTableModel
,我想使每列不同的宽度,以调整选项ui->tableView->horizontalHeader()->setSectionResizeMode (QHeaderView::Stretch);
QTableView中具有不同的列宽
在我的模型我做的:
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
@sanjay编写自己的视图,所以我需要继承qabstractitemview并重新实现'QAbstractItemView :: sizeHintForColumn(int column)const'并返回我想要的大小?或者这还不够,我将需要重新实现'resizeEvent(QResizeEvent * event)'? – Vladislav