1

モデルがバインドされている QTableView があります。(model->setItem を使用して) モデルを埋めてから、テーブルの列の幅を調整したいと考えています。相対サイズを使用したいので、最初の列は幅全体の 60%、2 番目の列は 40% にする必要があります。

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

問題は、最初にダイアログを開いたとき、テーブルの幅が実際よりもはるかに小さく、2 回目にしか機能しないことです。テーブルはレイアウトです。レイアウトを削除するとすぐにすべてが正常に機能しますが、レイアウトを使用する必要があります。まだレイアウトを使用しているテーブルの適切なサイズを取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

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) ;
于 2011-04-20T06:15:49.693 に答える