#qt #qtableview
#qt #qtableview
Вопрос:
У меня есть QTableView, к которому привязана модель. Я заполняю модель (используя model-> setItem), а затем хотел бы отрегулировать ширину столбцов в таблице. Я хотел бы использовать относительный размер, поэтому первый столбец должен составлять 60% от всей ширины, второй — 40%.
int tableWidthEffective = ui->tablePackages->width();
ui->tablePackages->setColumnWidth(0, tableWidthEffective * 0.6);
Проблема в том, что когда я открываю диалоговое окно в первый раз, ширина таблицы намного меньше, чем на самом деле, это работает только во второй раз. Таблица находится в макете. Как только я удаляю макет, все работает должным образом, но мне нужно использовать макет. Как получить правильный размер таблицы, все еще используя layout?
Спасибо
Ответ №1:
В Qt виджеты изменяют размер самих себя, посылая сигналы своим родителям и дочерним элементам. Для этого нужен цикл обмена сообщениями. Итак, попробуйте это из кода вашего диалогового окна, прежде чем показывать его в первый раз:
setAttribute (Qt::WA_DontShowOnScreen, true) ; // Prevent screen flicker
show() ;
QEventLoop EventLoop (this) ;
for ( ; ; )
if (!EventLoop.processEvents()) break ;
hide() ;
setAttribute (Qt::WA_DontShowOnScreen, false) ;