窗口中有四个按钮和一个starckwidget,通过重写resize event事件实现窗口的自适应,starckwidget窗口会随着主窗口大小变化而变化,但是里面的子控件就不行了,原因是我的代码只获取了主窗口的children,但是starckwidget的children没有获取,请问如何获取starckwidget的children,谢谢🙏
6条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在Qt中,要访问
QStackedWidget
(栈式布局)的子控件,你需要明确地处理这个特定的QStackedWidget
实例。首先,确保你在创建QStackedWidget
时给它起了一个易于识别的名字,例如stackedWidget
。然后,你可以通过以下方式来获取它的子控件:- 在
QStackedWidget
对象上定义一个方法来获取其所有子控件(比如QWidget *children[]
数组):
#include <QObject> #include <QList> class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = nullptr) : QWidget(parent) , stackedWidget(this) // 将stackedWidget设置为父窗口的成员 { // 初始化stackedWidget // ... } // 添加子控件到stackedWidget void addChild(QWidget *child) { stackedWidget.addWidget(child); } // 获取stackedWidget的所有子控件 QList<QWidget *> getStackedWidgetChildren() const { return stackedWidget.findChildren<QWidget>(); } private: QStackedWidget stackedWidget; };
- 在你的resize event处理函数中,调用上述方法获取
QStackedWidget
的子控件列表:
void MyWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); // 获取stackedWidget的子控件并处理它们 for (QWidget *child : getStackedWidgetChildren()) { // 更新子控件的位置、大小或其他属性,以适应窗口变化 child->adjustSize(); // 其他处理逻辑... } }
这样,每当窗口大小改变时,
QStackedWidget
内的子控件也会相应调整。记住,如果你的子控件是动态添加的,确保在添加后调用adjustSize()
以更新它们的布局。解决 1无用- 在
悬赏问题
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真
- ¥15 关于#c语言#的问题,请各位专家解答!