Только один столбец, чтобы соответствовать его размеру контента, в то время как другие растягиваются - PullRequest
1 голос
/ 07 июля 2019

У меня есть таблица, которая выглядит следующим образом:

  |   column1   |   column2    |   column 3
-------------------------------------------
1 | name1       | value1       |  class1
2 | name2       | value2       |  class2
3 | name3       | value3       |  class3

Я определил виджет таблицы как:

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setHorizontalHeaderLabels({"column1", "column2", "column3"});
ui->tableWidget->setItem(currentRow, 0, new QTableWidgetItem(name));
ui->tableWidget->setItem(currentRow, 1, new QTableWidgetItem(values.toString()));
ui->tableWidget->setItem(currentRow, 3, new QTableWidgetItem(class));

Я бы хотел, чтобы моя таблица выглядела так:

  |   column1   |column2|   column 3
-------------------------------------------
1 | name1       |value1 |  class1
2 | name2       |value2 |  class2
3 | name3       |value3 |  class3

Как мне добиться, чтобы только column2 (вместе с его значениями) соответствовало его содержанию?

1 Ответ

0 голосов
/ 08 июля 2019

Этого можно добиться с перегрузкой setSectionResizeMode, которая принимает индекс столбца в качестве первого аргумента:

ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed);

Затем, вставив все элементы, вызовите resizeColumnToContents в столбце фиксированного размера, чтобы настроить его ширину.

Вот полный код:

ui->tableWidget->setColumnCount(3);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed);
ui->tableWidget->setHorizontalHeaderLabels({"column1", "column2", "column3"});

// Insert items here...

ui->tableWidget->resizeColumnToContents(1);

Полный пример вы можете найти в GitHub .

...