• QWidget,QTableWidget删除(delete)动态添加(new)的子控件释放内存


    1、主要使用到的QT函数原型定义:

    template <typename Container>
    inline void qDeleteAll(const Container &c)
    {
        qDeleteAll(c.begin(), c.end());
    }
    #if QT_CONFIG(regularexpression)
        template<typename T>
        inline QList<T> findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
        {
            typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type ObjType;
            QList<T> list;
            qt_qFindChildren_helper(this, re, ObjType::staticMetaObject,
                                    reinterpret_cast<QList<void *> *>(&list), options);
            return list;
        }
    #endif // QT_CONFIG(regularexpression)

    2、实现 释放(delete)QTableWidget中动态增加(new)的子控件

        qDeleteAll(ui->tableWidget->findChildren<MyComboBox *>());
        qDeleteAll(ui->tableWidget->findChildren<MyDoubleSpinBox *>());
    MyComboBox、MyDoubleSpinBox分别是继承自QComboBox、QDoubleSpinBox的自定义类,当子控件为其他类型时,将MyComboBox 或MyDoubleSpinBox
    修改为需要寻找的子控件的类型即可。
    One day,I will say "I did it"
  • 相关阅读:
    linux 和 ubuntu 修改主机名
    Linux删除用户
    ubuntu更新源
    python连接mysql
    用于迭代器的yield return
    Tuple类型
    Action 和 Func
    用iDSDT制作声显卡DSDT
    C#“同步调用”、“异步调用”、“异步回调”
    读懂IL代码就这么简单
  • 原文地址:https://www.cnblogs.com/Vince-Wu/p/12669056.html
Copyright © 2020-2023  润新知