我想要实现的是一个小部件可以存在于两个不同的布局中,在本例中是QHBoxLayout和QVBoxLayout.我正在实现一个系统,当设备的屏幕方向改变时,该系统在两个布局之间动态切换.
目前我正在创建,假设一个名为MyWidget的复杂复合窗口小部件并将其添加到两个不同的布局中:
MyWidget *wgt = new QWidget();
QVBoxLayout vlayout;
QHBoxLayout hlayout;
vlayout->addWidget(wgt);
hlayout->addWidget(wgt);
Run Code Online (Sandbox Code Playgroud)
现在想象两个布局都在"根"布局中托管,并且这个根布局可以调整为更宽的高度"横向"模式,并且可以调整为高于宽"纵向"模式.
MyWidget仅在添加到的第一个布局中正确显示,并且当布局切换时,它显示全部错误或根本不显示.
我不知道我在这里是否有任何意义,但这是我的问题.也许当调用switch事件时,应调整所有子窗口小部件和布局的大小,因此它总是看起来正确.唯一的问题是我不知道如何.
小智 13
这不是更改布局的一般解决方案,而是您的简单解决方案:只需更改boxlayout的方向即可.
hlayout->setDirection(QBoxLayout::TopToBottom);
// now your hboxlayout works as vertical layout
hlayout->setDirection(QBoxLayout::LeftToRight);
// and now it is horizontal again
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4200 次 |
最近记录: |