@WTFAYD

Почему QTableWidget игнорирует columnSpan при вызове функции resizeRowsToContents()?

Небольшой фрагмент кода, иллюстрирующий проблему:
auto tw = new QTableWidget(3,3);

tw->setItem(0, 0, new QTableWidgetItem("test123 test123 test123 test123 test123 test123 test123"));
for (int i = 1; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        tw->setItem(i, j, new QTableWidgetItem("test123"));

tw->setSpan(0,0,1,3);

tw->show();
tw->resizeRowsToContents();

В этом примере генерируется табличка 3х3. В ячейке [0, 0] находится длинный текст, который по умолчанию не вмещается в эту ячейку. Для нее я создаю columnSpan на 3 столбца, чтобы текст мог влезть.

Все выглядит нормально до момента вызова функции QTableWidget::resizeRowsToColumns(). Все строки, кроме самой первой, нормально подбирают свою минимальную высоту. Первая же строка (где длинный текст) наоборот увеличивается в три раза.

63e4d4cb58549752838566.png

Складывается ощущение, что в работе функции не учитывается, что в ячейке [0,0] есть span и resizeRowsToContents() подбирает такую высоту этой строки, чтобы уместить весь длинный текст внутри одной ячейки.

Подскажите пожалуйста, почему QTableWidget игнорирует columnSpan при вызове функции resizeRowsToContents()? Как можно решить эту проблему?
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
kkmspb
@kkmspb
хобби C++, Qt, десктоп, микроконтроллеры STM32
Можно только предложит отладчиком пройтись внутрь resizeRowsToContents() и посмотреть.
В результате:
1.Может так и должно быть?
2.А как вам надо?
Вообще когда я делал свой QTableView я убрал напрочь весь span функционал (код реально тяжелый), а в своем варианте QpTableView сделал вывод секций по шаблону. На мой взгляд намного удобнее.
Можете посмотреть.
Примерно так:
65a29a2153c32803618740.jpeg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы