Как получить ширину виджета QTableWidget? Сумма всех колонок не подоходит - ибо можно его растянуть так, чтобы они закончились и было пустое место или наоборот сжать до появления горизонтальной прокрутки.
.width() не работает - показывает 100, когда настоящая ширина ~713.
Смотрел в треде 2012го года - рабочего варианта нет.
Как у меня работает: есть .ui, в котором описан QTableWidget с 6ю колонками. В процессе работы ему динамически создаются ячейки, скрываются\показываются столбцы.
Мне нужно изменить ширину диалога по таблице. Делаю так:
void GUIGraphStat::slot_TABLE_RecalcSize()
{
qint32 totalsize = 0;
totalsize += tblStats->isColumnHidden(COL_NAME) ? 0 : tblStats->columnWidth(COL_NAME);
totalsize += tblStats->isColumnHidden(COL_MINIMUM) ? 0 : tblStats->columnWidth(COL_MINIMUM);
totalsize += tblStats->isColumnHidden(COL_MAXIMUM) ? 0 : tblStats->columnWidth(COL_MAXIMUM);
totalsize += tblStats->isColumnHidden(COL_MEAN) ? 0 : tblStats->columnWidth(COL_MEAN);
totalsize += tblStats->isColumnHidden(COL_RMS) ? 0 : tblStats->columnWidth(COL_RMS);
totalsize += tblStats->isColumnHidden(COL_DEVIATION) ? 0 : tblStats->columnWidth(COL_DEVIATION);
totalsize += (this->width() - tblStats->width());
this->setFixedWidth(totalsize);
}
Сам диалог выглядит так:
┌──────────────┐ - QDialog
│┌────────────┐│ // QTableWidget with buttons' layout
││QTableWidget││ // in vertical layout
││ ││
││ ││
│└────────────┘│
│[btn] [btn]│ // Buttons in horisontal layout
└──────────────┘
tblStats->width() возвращает 100. Должен около 713.
Как решить?
Уточняю - проблема, когда виджет еще не был показан. Если он уже был на экране - проблемы нет.