QList<int> qlist; for(int i =0 ; i < 10; i++) qlist.insert(qlist.end(), i+10); qDebug()< <qlist; qDebug()<<"---------------通过QList<T>::iterator读写迭代器 --------------"; QList<int>::iterator "; //QList中添加元素 在尾部中追加元素 qlist.append(666); qDebug()<<qlist; qDebug()<<"---------------查询 QList中的元素 --------------"; //查询QList中的元素 qDebug()<< qlist.at(1); //通过index访问 qDebug()<< qlist.contains //删除QList中的元素 qlist.removeAt(0); //删除index为0的元素 qlist.removeFirst(); //删除第一个元素 qDebug()<<qlist
结构体排序: 写法一 QList<test> s; test aa; test bb; test cc; aa.num = "14"; bb.num < infoB.num.toDouble(); } int main(int argc, char *argv[]) { QApplication a(argc, argv); QList Qt对整形排序: QList list; list << 33 << 12 << 68 << 6 << 12; qSort(list.begin(), list.end()); // list: [ 6 double planAmount; //计划量 double purchaseAmount; //采购量 double amount; //总量 }; 结构体如上所示, 对QList void OverdraftControl::sortBarData(QList *barDataList) { qSort(barDataList->begin(), barDataList-
QList是目前最常用的容器类,它存储了给定类型的值的一个列表,而这些值可以通过索引访问。QList使用数组来实现,以确保进行快速的基于索引的访问。 使用QList::append和QList::prepend在列表的两端进行添加项目。 使用QList::insert()在列表的中间插入项目。 实例: #include <QCoreApplication> #include <QList> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QList<QString> list; list << "aa" << "bb" << "cc"; // 插入项目
QList<std::unique<Concat>> m_contacts; m_contacts.emplaceBack(new Contact("", "")); m_contacts.emplaceBack 原因如下: 在给定的代码中,第二行 m_contacts.emplaceBack(); 报错的原因是 std::unique_ptr 对象不能直接通过 emplace_back() 函数插入到 QList 而 QList 是一个基于值语义的容器,要求存储的元素类型必须支持拷贝构造和拷贝赋值操作。 解决此问题的一种方法是将 std::unique_ptr 包装在一个额外的类中,该类支持拷贝操作,并将该类的对象存储在 QList 中。 UniqueConcatWrapper(QSharedPointer<Contact> ptr) : ptr(ptr) {} }; class ContactView : public QListView { QList
---- 附录 Qt4.8.7与Qt5.12.3的相同QList源码 template <typename T> inline const T &QList<T>::at(int i) const { Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::at", "index out of range"); return reinterpret_cast<Node (i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range"); return reinterpret_cast<Node *>(p.at(i))->t(); } template <typename T> inline T &QList<T>::operator[](int i) { Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range"); detach(); return reinterpret_cast
QList类,QLinkedList类 和 QVector类 QList类、QLinkedList类和QVector类常常使用到的Qt容器类有QList、QLinkedList和QVector等 当中: “Amort.O(1)”表示仅完毕一次操作.可能会有O(n)行为. (1)QList类 QList<T>是眼下为止最经常使用的容器类。它存储给定数据类型T的一列数值。 QList提供了能够在列表进行追加的QList::append()和Qlist::prepend()函数。也提供了在列表中间完毕插入操作的函数QList::insert()。 QList被高度优化。 QList<T>维护了一个指针数组,该数组存储的指针指向QList<T>存储的列表项的内容。 #include <QDebug> #include <QList> int main() { QList<QString> list; { QString str(
;//数据类型 typedef struct list { elemtype* elem;//数组首元素递增 int len;//数组元素个数 int listsize;//开辟的数组长度 }qlist ; status initlist(qlist& L) { elemtype* p = (elemtype*)malloc(sizeof(elemtype) * initsize); if (p exit(overflow); } L.elem = p; L.listsize = initsize; L.len = 0; return ok; } status input(qlist \n"); return ok; } status dele(qlist& L) { printf("请输入要删除的位置! L, qlist L1, qlist& L2) { //下标写法 int len = 0; int i = 0, j = 0, k; while (i < L.len && j < L1.len
,QLinkedList,QVector,QStack,QQueue qlist: 顺序容器,qlist是以下表的方式对数据进行访问的,可以使用下表索引的方式访问特定数据。 #include <QCoreApplication> #include <iostream> #include <QList> void Display(QList<QString> &ptr) { 完全一致,但性能要比Qlist更高,但在插入时速度最慢。 与qmap结合使用,实现嵌套 , 在qmap中存储一个qlist数据。 > #include <QMap> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QList<
active { background: #00000000; color: black; } \ "); C++98不支持>>需要使用空格分开 将: QList<QPair <QString, QString>> 改为: QList<QPair<QString, QString> > C++98不支持for的直接范围循环 将: const QList<QPair<QString &tmp = m_data[text.left(1)]; for (const QPair<QString, QString> &each : tmp) { ... } 改为: const QList <Modes> modeListBar_4() { QList<Modes> modesList; Modes modes1; modes1 << KeyButton::Mode , ""/*换行*/); modesList << modes1 << modes2 << modes3 << modes4; return modesList; } const QList
——通过利用hash显著提高程序运行的效率巧妙利用hash显著 提高程序运行效率for(PointData &point: DataPoint001){ // 点周围的线 QList 优化后的代码以下是优化后的代码示例:// 假设PointData、LineData、FaceData结构如下:struct PointData { int pointIndex; QList <int> lineIndex; QList<int> faceIndex; // 其他成员};struct LineData { int lineIndex; QList<int QList<PointData> DataPoint001;QList<LineData> DataLine001;QList<FaceData> DataFace001;// 预处理:构建点到线、点到面的映射 QHash<int, QList<int>> pointToLinesMap;QHash<int, QList<int>> pointToFacesMap;// 预处理线数据for (const LineData
以下是 QList 的一些常用函数: 函数 功能 QList::QList() 构造函数,创建一个空的 QList 对象。 QList::QList(const QList &other) 复制构造函数,创建一个与给定列表相同的 QList 对象。 QList::isEmpty() const 判断列表是否为空。 QList::size() const 返回列表中元素的数量。 QList::clear() 清空列表,移除所有元素。 QList::operator=() 重载赋值运算符,将一个列表赋值给另一个列表。 QList::operator==() 重载相等运算符,判断两个列表是否相等。 QList::operator! 该容器的使用与Qlist完全一致,但读取性能要比Qlist更高,但在插入时速度最慢。
获取所有的键和键值 QList<QString> allKeys = map.keys(); qDebug() << allKeys; QList<int> allValues CMAP_H #define CMAP_H #include "CMAP_global.h" #include <QStringList> #include <QDebug> #include <QList <int> keys, QStringList value1s, QList<int> value2s); /* 插入多行数据 */ QList<int> keys() const; /* 获取所有键 <int> key_list; QStringList value1_list; QList<int> value2_list; }; #endif // CMAP_H cmap.cpp <int> keys, QStringList value1s, QList<int> value2s) { Q_ASSERT(keys.size() == value1s.size(
QAxObject *font = cell->querySubObject("Font"); font->setProperty("Color", color); } //把QVariant转为QList <QList<QVariant> >,用于快速读出的 void castVariant2ListListVariant(const QVariant &var, QList<QList<QVariant rowCount;++i) { rowData = varRows[i].toList(); res.push_back(rowData); } } //把QList <QList<QVariant> > 转为QVariant,用于快速写入的 void castListListVariant2Variant(const QList<QList<QVariant> > <QList<QVariant> > datas; for(int i=1;i<101;i++) { QList<QVariant> rows; for(
表头及节点的定义 定义表头需要用到QLIST_HEAD,定义如下: 86 #define QLIST_HEAD(name, type) ; 定义节点需要用到QLIST_ENTRY,定义如下: 94 #define QLIST_ENTRY(type) 初始化表头 初始化表头用到QLIST_INIT: 103 #define QLIST_INIT(head) do { 在表头插入节点 将节点插入到表头使用QLIST_INSERT_HEAD: 122 #define QLIST_INSERT_HEAD(head, elm, field) do { 遍历节点 遍历节点使用QLIST_FOREACH或者QLIST_FOREACH_SAFE,QLIST_FOREACH_SAFE是为了防止遍历过程中删除了节点,从而导致le_next被释放掉,中断了遍历。
与QMap组合 代码通过结合使用 QList 和 QMap 实现了数据的嵌套存储。 具体而言,通过在 QMap 中存储键值对,其中键是时间字符串,而值是包含浮点数数据的 QList。这种结构使得可以方便地按时间检索相关联的数据集。 1.4.2 QList合并为QMap 通过使用 QList 存储头部信息(Header)和相应的数值信息(Values),然后通过循环迭代将两个列表合并为一个 QMap。 1.4.3 QMap拆分为QList 这段代码演示了如何使用 QMap 存储键值对,并分别将键和值存储到两个 QList 中。首先,通过 Display 函数输出了 QMap 中的键值对。 结构体排序 实现对包含结构体 MyStruct 的 QList 进行排序,并输出排序后的结果。
,QLinkedList,QVector,QStack,QQueueqlist: 顺序容器,qlist是以下表的方式对数据进行访问的,可以使用下表索引的方式访问特定数据。 #include <QCoreApplication>#include <iostream>#include <QList>void Display(QList<QString> &ptr){ std 完全一致,但性能要比Qlist更高,但在插入时速度最慢。 与qmap结合使用,实现嵌套 , 在qmap中存储一个qlist数据。 <QMap>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QList<QString> Header
主要说Qt的以下几种容器 1.QList<T> 2.QLinkedList<T> 3.Map<T> 和一些常用的容器方法的使用 qSort qCopy qFind 1.QList<T>泛型集合是最常用的一种容器 看一下它的常用 操作 添加删除和两个迭代器 QListIterator和QMutableListIterator #include <QCoreApplication> #include<QList> #include<QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QList<int <T>差不多,不同的一点是它是用迭代器做的访问项 也就是说QList<int> list只以通过这样访问它的内容list[i]而QLinkedList不可以只能用Iterator 性能上它要高于QList } return a.exec(); } 下边说一下常用的集合操作方法 qSort qCopy qFind #include <QCoreApplication> #include<QList
include "NumberKeyboard.h" #include "KeyButton.h" #include <QVBoxLayout> using namespace AeaQt; typedef QList <KeyButton::Mode> Modes; typedef QList<Modes> ModesList; static const QString s_backspace_icon = ":/ iter); h->addWidget(button); } layout->addLayout(h); }; const QList Qt::Key_3, "3"}}, {{Qt::Key_Backspace, "", QIcon(s_backspace_icon)}}, }; const QList Key_8, "8"}}, {{Qt::Key_9, "9"}}, {{Qt::Key_Minus, ","}}, }; const QList
实现 Csv解析实现使用 QList<QVariantMap>Csv::readAll();接口解析csv格式,每一行的Csv格式数据为一个QList的item项,QVariantMap为第一行的标题与值的匹配 如: static bool convert(QList<QVariantMap> source, QString language, QString outputFile) convert(csvContexts include <QDebug> const QStringList Languages = { "zh_CN", "en" }; static QString convertContext(QList arg(fileName); return false; } else { return true; } } QList<QVariantMap > Csv::readAll() { QList<QVariantMap> data; if (m_file == NULL) return data; bool
kdabian\LOCALS~1\Temp\nm46.tmp environment.obj : error LNK2005: "public: __thiscall public: __thiscall QList <class QString>::QList<class QString>(class QList<class QString> const &)'::5'::Cleanup::Cleanup(struct local-classes-inside-inline-non-member-function-produces-lnk2005-with-msvc2005 The code that triggers the problem is in qlist.h : @template <typename T> Q_OUTOFLINE_TEMPLATE QList<T>::QList(const QList<T> &l) : d(l.d) { if (!