从QWidget::createWindowContainer创建的范例sizeHint()是什么?

3
因此,我使用createWindowContainer将自定义的QWindow包装在窗口小部件中。默认情况下,由于QWindow不在布局中,它会给出无效的大小提示(-1)。此外,QWindow没有大小提示。
我该如何使用render_surface中的函数指定sizeHint()
window_container = QWidget::createWindowContainer(render_surface);
auto hint = window_container->sizeHint(); // how do I specify this?
std::cout << hint.width() << std::endl;  //invalid

报告为“错误” https://bugreports.qt.io/browse/QTBUG-57693 - Mikhail
2个回答

0

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


我不确定你的意思,createWindowContainer 返回的是一个 QWidget,而不是我设计的自定义类。 - Mikhail
啊,我明白了,你无法控制小部件的工厂方法。你能否切换你的代码以利用你将要编写的这种方法? - Adrian Colomitchi

0

我在错误跟踪器上发布了一些内容,当前的方法是使用第二个小部件来“遮盖”尺寸。

代码看起来像这样:

在父类构造函数中

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


嗨,请问你能分享你使用的整个代码吗?我觉得你定义PlaceHolderWidget的那部分缺失了。谢谢! - jbp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接