у меня есть 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
вариант. Как сделать столбцы и заголовки разными по размеру?
Вы можете использовать это:
ui->tableView->resizeColumnsToContents();//resize all the columns based on longest data in every column.
Но если вы действительно хотели изменить их размер в точности со значениями ширины, которые вы использовали в своем коде:
ui->tableView->horizontalHeader()->setSectionResizeMode (QHeaderView::Stretch);
ui->tableView->setColumnWidth(0,58);
ui->tableView->setColumnWidth(1,58);
ui->tableView->setColumnWidth(2,58);
ui->tableView->setColumnWidth(3,228);
Других решений пока нет …