问:如何获得QTableView的大小?

时间:2011-04-20 05:46:35

标签: qt qtableview

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

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

问题是当我第一次打开对话框时,表格的宽度远小于实际值,它只能在第二次打开。该表位于布局中。一旦我删除布局一切正常,但我需要使用布局。如何使用布局来获得正确的表格大小?

由于

1 个答案:

答案 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) ;