Qt:如何获取QTableView的大小?

发布于 2024-11-02 03:55:45 字数 383 浏览 6 评论 0原文

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

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

问题是,当我第一次打开对话框时,表格的宽度比实际宽度小得多,它仅在第二次才起作用。该表处于布局中。一旦我删除布局,一切都会正常工作,但我需要使用布局。如何仍然使用布局获得表格的正确大小?

谢谢

I have a QTableView, that the Model is bound to. I fill the model (using model->setItem) and then would like to adjust the widths of the columns on the table. I would like to use the relative size, so the first column should be 60% of the whole width, the second one - 40%.

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

The problem is when I open the dialog the first time the width of the table is much less than really, it works only in the second time. The table is in Layout. As soon as I delete layout everything works properly but I need to use the layout. How to get the proper size of the table still using layout?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

私野 2024-11-09 03:55:45

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

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

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

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

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) ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文