Что ж, логика Qt такова, что после изменения размера столбца область прокрутки проверяет, как столбцы вписываются в него.И если сумма ширины всех столбцов меньше видимой ширины виджета, то размер последнего столбца изменяется, чтобы заполнить пространство, приводящее к отсутствию видимого результата вызова setColumnWidth () .На самом деле происходит два изменения размера - сужение и обратное увеличение.
Итак, урок - получить видимую ширину элемента управления, пересчитать размеры по своему усмотрению и изменить размер всего, кроме последнего столбца.Для случая с двумя столбцами это действительно просто:
int secondColumnWidth = 100;
int firstColumnWidth = m_selectCategoryTableWidget->width() - secondColumnWidth;
if (firstColumnWidth > 0)
{
m_selectCategoryTableWidget->setColumnWidth(0, firstColumnWidth);
}
else
{
m_selectCategoryTableWidget->resizeColumnsToContents();
}
Удачи!