1

我有一个模型绑定到的 QTableView。我填充模型(使用模型->setItem),然后想调整表格上列的宽度。我想使用相对大小,所以第一列应该是整个宽度的 60%,第二列应该是 40%。

int tableWidthEffective = ui->tablePackages->width();
ui->tablePackages->setColumnWidth(0, tableWidthEffective * 0.6);

问题是当我第一次打开对话框时,表格的宽度比实际要小得多,它只在第二次起作用。该表在布局中。删除布局后,一切正常,但我需要使用布局。如何在仍然使用布局的情况下获得适当大小的表格?

谢谢

4

1 回答 1

3

In Qt, widgets resize themselves by emitting signals to their parents and children. This needs a message loop. So try this from your dialog box code, before you show it for the first time:

setAttribute (Qt::WA_DontShowOnScreen, true) ; // Prevent screen flicker
show() ;

QEventLoop EventLoop (this) ;
for ( ; ; )
  if (!EventLoop.processEvents()) break ;

hide() ;
setAttribute (Qt::WA_DontShowOnScreen, false) ;
于 2011-04-20T06:15:49.693 回答