我在應用程序中的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