Qlist+QMap+QVariant使用

本文详细介绍了Qt中QList和QMap容器类的多种使用方法,包括如何添加元素、遍历容器等内容,并展示了QVariant类型的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.QList的使用

QList<int> list;
//向list中添加内容
list<<1<<2<<3<<4<<5;
//通过listiterator遍历list中的内容
QListIterator<int> ite(list);
for(;ite.hasNext();)
   qDebug()<<ite.next();
//通过iterator遍历list中的内容
QList<int>::iterator i;
for(i=list.begin();i!=list.end();++i)
{
   qDebug()<<(*i);
   *i=(*i)*10;
}
QList<int>::const_iterator ci;
for(ci=list.constBegin();ci!=list.constEnd();++ci)
    qDebug()<<*ci;

2.QMap的使用

QMap<QString,int> map;
map.insert("a",10);
map.insert("b",20);
QMapIterator<QString,int> ite(map);
for(;ite.hasNext();)
    qDebug()<<" " <<ite.key() << " " << ite.next().value();

3.QList use 2

//QList遍历
//way 1
QList<int> list;
QMutableListIterator<int> i(list);
for(int j=0;j<5;++j)
	i.insert(j);
for(i.toFront();i.hasNext();)
	qDebug()<<i.next();
for(i.toBack();i.hasPrevious();)
{
	if(i.previous()%2==0)
		i.remove();
	else
		i.setValue(i.peekNext()*100);
}
for(i.toFront();i.hasNext();)
	qDebug()<<i.next();
	
//way 2
QList<int> list;
for(int j=0;j<5;j++)
	list.insert(list.end(),j);
QList<int>::iterator i;
for(i=list.begin();i!=list.end();++i)
{
   qDebug()<<(*i);
   *i=(*i)*100;
}
QList<int>::const_iterator ci;
for(ci=list.constBegin();ci!=list.constEnd();++ci)
	qDebug()<<*ci;

4.QMap use 2

//QMap使用
//way 1
QMap<QString,QString> map;
map.insert("a","1");
map.insert("b","2");
map.insert("c","3");
QMapIterator<QString,QString> i(map);
for(;i.hasNext();)
	qDebug()<<"  "<<i.key()<<"  "<<i.next().value();
QMutableMapIterator<QString,QString> mi(map);

if(mi.findNext("1")){
	qDebug()<<"1  "  ;
	mi.setValue("11");
}
QMapIterator<QString,QString> modi(map);
qDebug()<<"  ";
for(;modi.hasNext();)
	qDebug()<<" "<<modi.key()<<"  "<<modi.next().value();
	
	
//way 2
QMap<QString,QString> map;
map.insert("a","1");
map.insert("b","2");
map.insert("c","3");
QMap<QString,QString>::const_iterator i;
for(i=map.constBegin();i!=map.constEnd();++i)
	qDebug()<<"  "<<i.key()<<"  "<<i.value();
QMap<QString,QString>::iterator mi;
mi=map.find("a");
if(mi!=map.end())
	mi.value()="11";
QMap<QString,QString>::const_iterator modi;
qDebug()<<"  ";
for(modi=map.constBegin();modi!=map.constEnd();++modi)
	qDebug()<<"  "<<modi.key()<<"  "<<modi.value();

5.QVariant使用

//QVariant使用
QVariant v(100);
qDebug()<<v.toInt();
QVariant w("hello ");
qDebug()<<w.toString();
QMap<QString,QVariant>map;
map["int"]=11;
map["double"]=11.11;
map["string"]="hello ";
map["color"]=QColor(0,0,0);
qDebug()<<map["int"]<< map["int"].toInt();
qDebug()<<map["double"]<< map["double"].toDouble();
qDebug()<<map["string"]<< map["string"].toString();
qDebug()<<map["color"]<< map["color"].value<QColor>();
QStringList sl;
sl<<"a"<<"b"<<"c";
QVariant slv(sl);
if(slv.type()==QVariant::StringList)
{
	QStringList list=slv.toStringList();
	for(int i=0;i<list.size();++i)
		qDebug()<<list.at(i);
}
D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:19: error: 'setModel' was not declared in this scope; did you mean 'setModal'? D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: In constructor 'view::equipment::kchangemanage::kchangemanage(QWidget*)': D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:19:5: error: 'setModel' was not declared in this scope; did you mean 'setModal'? 19 | setModel(model); // 设置模型到成员变量 | ^~~~~~~~ | setModal D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:26: error: no declaration matches 'void view::equipment::kchangemanage::setModel(QAbstractItemModel*)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: At global scope: D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:26:6: error: no declaration matches 'void view::equipment::kchangemanage::setModel(QAbstractItemModel*)' 26 | void kchangemanage::setModel(QAbstractItemModel *model) { | ^~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:26:6: note: no functions named 'void view::equipment::kchangemanage::setModel(QAbstractItemModel*)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:1: In file included from D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:1: In file included from D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:1: D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.h:15:7: note: 'class view::equipment::kchangemanage' defined here 15 | class kchangemanage : public QDialog { | ^~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:41: error: 'searchEquipment' was not declared in this scope D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: In member function 'void view::equipment::kchangemanage::on_find_clicked()': D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:41:46: error: 'searchEquipment' was not declared in this scope 41 | QList<QMap<QString, QVariant>> results = searchEquipment(keyword, -1, ""); // 仅按名称模糊查找 | ^~~~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:63: error: no declaration matches 'QList<QMap<QString, QVariant> > view::equipment::kchangemanage::searchEquipment(const QString&, int, const QString&)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: At global scope: D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:63:32: error: no declaration matches 'QList<QMap<QString, QVariant> > view::equipment::kchangemanage::searchEquipment(const QString&, int, const QString&)' 63 | QList<QMap<QString, QVariant>> kchangemanage::searchEquipment(const QString &nameKeyword, int classId, const QString &status) { | ^~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:63:32: note: no functions named 'QList<QMap<QString, QVariant> > view::equipment::kchangemanage::searchEquipment(const QString&, int, const QString&)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.h:15:7: note: 'class view::equipment::kchangemanage' defined here 15 | class kchangemanage : public QDialog { | ^~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:109: error: 'class QAbstractItemModel' has no member named 'select' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: In member function 'void view::equipment::kchangemanage::on_change_clicked()': D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:109:18: error: 'class QAbstractItemModel' has no member named 'select' 109 | m_model->select(); // 刷新模型数据 | ^~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:134: error: 'deleteEquipmentByNumbers' was not declared in this scope D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: In member function 'void view::equipment::kchangemanage::on_deleteButton_clicked()': D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:134:19: error: 'deleteEquipmentByNumbers' was not declared in this scope 134 | int deleted = deleteEquipmentByNumbers({equipmentNumber}); | ^~~~~~~~~~~~~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:136: error: 'class QAbstractItemModel' has no member named 'select' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:136:18: error: 'class QAbstractItemModel' has no member named 'select' 136 | m_model->select(); // 刷新模型数据 | ^~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:143: error: no declaration matches 'int view::equipment::kchangemanage::deleteEquipmentByNumbers(const QStringList&)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp: At global scope: D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:143:5: error: no declaration matches 'int view::equipment::kchangemanage::deleteEquipmentByNumbers(const QStringList&)' 143 | int kchangemanage::deleteEquipmentByNumbers(const QStringList &equipmentNumbers) { | ^~~~~~~~~~~~~ D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:143:5: note: no functions named 'int view::equipment::kchangemanage::deleteEquipmentByNumbers(const QStringList&)' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.h:15:7: note: 'class view::equipment::kchangemanage' defined here 15 | class kchangemanage : public QDialog { | ^~~~~~~~~~~~~ mingw32-make.exe[2]:-1: *** [CMakeFiles\LabNexus.dir\build.make:269: CMakeFiles/LabNexus.dir/view/equipmentManage/kchangemanage.cpp.obj] Error 1 mingw32-make.exe[1]:-1: *** [CMakeFiles\Makefile2:114: CMakeFiles/LabNexus.dir/all] Error 2 mingw32-make.exe:-1: *** [Makefile:100: all] Error 2 D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:19: error: Use of undeclared identifier 'setModel'; did you mean 'setModal'? (fix available) D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:26: error: Out-of-line definition of 'setModel' does not match any declaration in 'view::equipment::kchangemanage' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:41: error: Use of undeclared identifier 'searchEquipment' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:63: error: Out-of-line definition of 'searchEquipment' does not match any declaration in 'view::equipment::kchangemanage' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:109: error: No member named 'select' in 'QAbstractItemModel' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:134: error: Use of undeclared identifier 'deleteEquipmentByNumbers' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:136: error: No member named 'select' in 'QAbstractItemModel' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:143: error: Out-of-line definition of 'deleteEquipmentByNumbers' does not match any declaration in 'view::equipment::kchangemanage' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:154: error: No matching member function for call to 'replace' D:\QT_PROGRAM\LabNexus\view\equipmentManage\kchangemanage.cpp:157: error: No member named 'rowsAffected' in 'service::DatabaseManager'
07-13
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力减肥的小胖子5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值