Qt:如何获取QTableView的大小?

Qt:如何获取QTableView的大小?,qt,qtableview,Qt,Qtableview,我有一个QTableView,该模型是绑定的。我填充模型(使用model->setItem),然后想调整表中列的宽度。我想使用相对大小,所以第一列应该是整个宽度的60%,第二列-40% int tableWidthEffective = ui->tablePackages->width(); ui->tablePackages->setColumnWidth(0, tableWidthEffective * 0.6); 问题是,当我第一次打开对话框时,表的宽度比实际的要

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

int tableWidthEffective = ui->tablePackages->width();
ui->tablePackages->setColumnWidth(0, tableWidthEffective * 0.6);
问题是,当我第一次打开对话框时,表的宽度比实际的要小得多,它只在第二次工作。这张桌子在布置中。一旦我删除布局,一切正常,但我需要使用布局。如何在使用布局的情况下获得表的适当大小


感谢Qt中的

,小部件通过向其父母和子女发送信号来调整自身大小。这需要一个消息循环。因此,在首次显示之前,请从对话框代码中尝试以下操作:

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

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

hide() ;
setAttribute (Qt::WA_DontShowOnScreen, false) ;

谢谢,我今晚就试试这个。