因此,我使用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发布于 2016-12-25 05:22:01
我在bug跟踪器上发布了一些信息,目前的方法是使用第二个小部件来“阴影”大小。
代码看起来类似于:
在父构造函数中
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
发布于 2016-12-13 09:14:54
将virtual const QSize& sizeHint() const方法重写到包装器,该方法只返回包装窗口的QWindow::size()。
https://stackoverflow.com/questions/41116897
复制相似问题