我有一个模型绑定的QTableView。我填充模型(使用model-> setItem),然后想调整表格上的列的宽度。我想使用相对大小,所以第一列应该是整个宽度的60%,第二列应该是40%。
int tableWidthEffective = ui->tablePackages->width();
ui->tablePackages->setColumnWidth(0, tableWidthEffective * 0.6);
问题是当我第一次打开对话框时,表格的宽度远小于实际值,它只能在第二次打开。该表位于布局中。一旦我删除布局一切正常,但我需要使用布局。如何使用布局来获得正确的表格大小?
由于
答案 0 :(得分:3)
在Qt中,小部件通过向父母和孩子发出信号来调整自己的大小。这需要一个消息循环。因此,在第一次显示之前,请从对话框代码中尝试此操作:
setAttribute (Qt::WA_DontShowOnScreen, true) ; // Prevent screen flicker
show() ;
QEventLoop EventLoop (this) ;
for ( ; ; )
if (!EventLoop.processEvents()) break ;
hide() ;
setAttribute (Qt::WA_DontShowOnScreen, false) ;