自定义对象数组

这是在项目中写的代码

主要是:

  let array = []
      array.push({
        "list": list,
        "price": price
      });
      console.log('array', array)

运用了concat()

在 Qt 中声明自定义类的对象数组,可以通过以下几种方法实现,具体取决于使用场景和需求: ### 使用静态数组声明自定义对象数组 如果对象数量固定且较小,可以使用静态数组来存储自定义类的对象。需要注意的是,自定义类必须满足可赋值数据类型的要求,即提供默认构造函数、复制构造函数和赋值运算符重载函数[^3]。 ```cpp class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; MyClass objects[10]; // 声明一个包含10个对象数组 ``` ### 使用 QList 存储自定义对象 Qt 提供了模板类 `QList`,可以方便地存储和管理自定义对象。同样,自定义类需要满足可赋值数据类型的要求。 ```cpp #include <QList> class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; QList<MyClass> objects; objects.append(MyClass()); // 添加一个对象 ``` ### 使用 QList 存储自定义类指针 如果对象较大或需要动态管理对象生命周期,可以将自定义类的指针存储在 `QList` 中。这样可以避免深拷贝带来的性能问题。 ```cpp #include <QList> class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; QList<MyClass*> objects; objects.append(new MyClass()); // 添加一个对象指针 ``` ### 使用 QVector 存储自定义对象 除了 `QList`,Qt 还提供了 `QVector`,它与 `QList` 类似,但在某些情况下性能更优,尤其是当数据连续存储时。 ```cpp #include <QVector> class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; QVector<MyClass> objects; objects.append(MyClass()); // 添加一个对象 ``` ### 使用 QVector 存储自定义类指针 类似于 `QList`,`QVector` 也可以存储指针,适用于动态管理对象的情况。 ```cpp #include <QVector> class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; QVector<MyClass*> objects; objects.append(new MyClass()); // 添加一个对象指针 ``` ### 使用 QMetaType 注册自定义类 如果自定义类需要与 Qt 元对象系统交互(如信号与槽、属性系统等),则需要在头文件中使用 `Q_DECLARE_METATYPE` 宏进行注册[^1]。 ```cpp #include <QMetaType> class MyClass { public: MyClass(); // 默认构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 }; Q_DECLARE_METATYPE(MyClass); ``` ### 使用 Q_OBJECT 宏支持信号与槽机制 如果自定义类需要支持 Qt 的信号与槽机制,则需要在类定义中添加 `Q_OBJECT` 宏,并确保其继承自 `QObject` 类[^5]。 ```cpp #include <QObject> class MyClass : public QObject { Q_OBJECT public: explicit MyClass(QObject *parent = nullptr); // 构造函数 MyClass(const MyClass &other); // 复制构造函数 MyClass &operator=(const MyClass &other); // 赋值运算符 signals: void mySignal(); // 自定义信号 public slots: void mySlot(); // 自定义槽函数 }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值