蜡笔小欣丫 2024-04-13 11:02 采纳率: 0%
浏览 4

Qt的QStarckWidget 如何找他到他children

窗口中有四个按钮和一个starckwidget,通过重写resize event事件实现窗口的自适应,starckwidget窗口会随着主窗口大小变化而变化,但是里面的子控件就不行了,原因是我的代码只获取了主窗口的children,但是starckwidget的children没有获取,请问如何获取starckwidget的children,谢谢🙏
我现在就是希望实现窗口随意放大缩小,所以子控件都会根据主窗口的缩放比例同步缩放。
我参考这个博主https://blog.csdn.net/hua12134/article/details/84888250实现了功能,但是由于他在主窗口中查找的children,不包括QStarckedWidget控件的children,导致窗口实现后,starckedwidget窗口会根据主窗口进行同比例缩放,但是里面的控件不会。请问有没有像这个链接一样,获取主窗口一样直接一步全部获取starckwidget的children的方法,谢谢!

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-13 11:02
    关注

    引自免费微信小程序:皆我百晓生

    为了实现你所描述的需求,你需要在主窗口的resizeEvent中遍历整个窗口树,包括所有的嵌套控件,包括QStackedWidget中的页面。下面是一个示例代码,它将递归地获取所有子控件,并调整它们的位置和大小:

    首先,定义一个辅助函数来遍历并调整子控件的大小和位置:

    void resizeChildren(QWidget* widget, const QSize& newGeometry) {
        foreach (QWidget* child, widget->findChildren<QWidget*>()) {
            child->setGeometry(child->mapFromParent(child->geometry()).translated(newGeometry.topLeft()));
            if (child->layout())
                child->layout()->update();
            else
                resizeChildren(child, newGeometry);
        }
    }
    

    然后,在主窗口的resizeEvent中调用这个函数:

    #include <QObject>
    // ...其他必要的头文件...
    
    class MainWindow : public QMainWindow {
    public:
        // ...你的构造函数和其他成员...
    private slots:
        void onResizeEvent(QResizeEvent*) {
            // 获取当前窗口的新尺寸
            QSize newSize = size();
    
            // 调整主窗口内的控件
            resizeChildren(this, newSize);
    
            // 为 QStackedWidget 的每个页面做同样的事情
            for (int i = 0; i < stackedWidget->count(); ++i) {
                QWidget *page = stackedWidget->widget(i);
                if (page)
                    resizeChildren(page, newSize);
            }
        }
    
    private:
        QStackedWidget* stackedWidget; // 假设这是你的 QStackedWidget 实例
    };
    

    确保在你的MainWindow类中有一个对QStackedWidget实例的引用(这里假设名为stackedWidget),并在适当的地方初始化它。这将确保无论主窗口还是QStackedWidget的页面,其内部的所有子控件都会根据主窗口的大小改变而相应地调整。

    如果你有任何疑问或需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月13日

悬赏问题

  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Linux权限管理相关操作(求解答)
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?