QTableView с различной шириной столбца

у меня есть 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 вариант. Как сделать столбцы и заголовки разными по размеру?

0

Решение

Вы можете использовать это:

 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]