来自QWidget :: createWindowContainer的范式sizeHint()?

时间:2016-12-13 08:50:35

标签: c++ qt

因此,我使用QWindow将自定义createWindowContainer打包在窗口小部件中。默认情况下,这会给出无效的大小提示(-1),因为QWindow不在布局中。此外,QWindow没有大小提示。

如何使用sizeHint()中的函数指定render_surface

window_container = QWidget::createWindowContainer(render_surface);
auto hint = window_container->sizeHint(); // how do I specify this?
std::cout << hint.width() << std::endl;  //invalid

2 个答案:

答案 0 :(得分:1)

virtual const QSize& sizeHint() const方法覆盖到包装器,该方法只返回其包装窗口的QWindow::size()

答案 1 :(得分:0)

我在错误跟踪器上发布了一些内容,目前的方法是使用第二个小部件来实现&#34; shadow&#34;大小。

代码类似于:

在父母的构造函数

auto window_container = QWidget::createWindowContainer(render_surface);
window_container->setLayout(new QGridLayout());
fml = new PlaceHolderWidget;
window_container->layout()->addWidget(fml);

在父母的调整大小事件

void RenderContainer::resizeEvent(QResizeEvent *event)
{
    auto frame_size = render_surface->img_size;
    if (frame_size.n() > 0)
    {
      ...
      fml->setSizeHint(QSize(predicted_width, predicted_height));
    }
    QWidget::resizeEvent(event);
}

PlaceHolderWidget覆盖sizeHint()的位置。 https://bugreports.qt.io/browse/QTBUG-57693