蜡笔小欣丫 2024-04-12 16:24 采纳率: 0%
浏览 8

Qt的QStarckWidget 如何找他到他children

窗口中有四个按钮和一个starckwidget,通过重写resize event事件实现窗口的自适应,starckwidget窗口会随着主窗口大小变化而变化,但是里面的子控件就不行了,原因是我的代码只获取了主窗口的children,但是starckwidget的children没有获取,请问如何获取starckwidget的children,谢谢🙏

  • 写回答

6条回答 默认 最新

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

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

    在Qt中,要访问QStackedWidget(栈式布局)的子控件,你需要明确地处理这个特定的QStackedWidget实例。首先,确保你在创建QStackedWidget时给它起了一个易于识别的名字,例如stackedWidget。然后,你可以通过以下方式来获取它的子控件:

    1. 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;
    };
    
    1. 在你的resize event处理函数中,调用上述方法获取QStackedWidget的子控件列表:
    void MyWidget::resizeEvent(QResizeEvent *event)
    {
        QWidget::resizeEvent(event);
    
        // 获取stackedWidget的子控件并处理它们
        for (QWidget *child : getStackedWidgetChildren()) {
            // 更新子控件的位置、大小或其他属性,以适应窗口变化
            child->adjustSize();
            // 其他处理逻辑...
        }
    }
    

    这样,每当窗口大小改变时,QStackedWidget内的子控件也会相应调整。记住,如果你的子控件是动态添加的,确保在添加后调用adjustSize()以更新它们的布局。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥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语言#的问题,请各位专家解答!