我正在尝试将包含QStrings Qlist的Student类型的对象追加到类型Student的Qlist上,我已经验证了Qstring是在一个阶段添加到Student对象的,但是当我到达该对象时它们似乎是空的下面的代码;
for(int i = 0; i < studentList.size(); i++){
qDebug() << studentList.at(i).atindex(i);
显示在底部。
-Listmanager.h
#ifndef LISTMANAGER_H
#define LISTMANAGER_H
#include <QString>
#include <QList>
#include <QStandardItemModel>
class listManager: QObject
{
Q_OBJECT
public:
listManager();
listManager(QList<QString> list);
QAbstractItemModel* listManager::getmodelview();
QAbstractItemModel* listManager::getclassmodelView();
public:
QStandardItemModel *courseModel = new QStandardItemModel(0,0);
QStandardItemModel *classModel = new QStandardItemModel(0,0);
};
#endif // LISTMANAGER_H
-listmanager.cpp的-relevent部分
student st;
int count2 = 0;
for (int i =6; i < list.size(); ++i){
if(count2 < 6){
st.appendtolist(list.at(i));
count2++;
}
if(count2 == 6){
count2 =0;
studentList.append(st);
st.showlist();
st.clearlist();
}
}
for(int i = 0; i < studentList.size(); i++){
qDebug() << studentList.at(i).atindex(i);
-student.cpp
#include "student.h"
#include <QDebug>
student::student()
{
}
void student::appendtolist(QString item){
list->append(item);
}
void student::showlist(){
qDebug() << *list;
}
void student::clearlist(){
list->clear();
}
QString student::atindex(int index)const {
for(int i = 0; i < list->size(); i++){
if(index == i){
return list->at(i);
}
}
return "Not Good!";
}
学生
#ifndef STUDENT_H
#define STUDENT_H
#include <QString>
#include <QList>
class student
{
public:
QList<QString> *list = new QList<QString>();
student();
void student::appendtolist(QString item);
void student::showlist();
void student::clearlist();
QString atindex(int index) const;
};
#endif // STUDENT_H
输出:
“不好!” “不好!” “不好!” “不好!” “不好!” “不
好!”“不好!”“不好!”“不好!”“不好!”“不好!”
“不好!” “不好!” “不好!” “不好!” “不好!” “不
好!”
最佳答案
动态分配列表,使用QList<QString> list;
代替,将list->
更改为list.
,将*list
更改为list
,这完全没有意义,甚至效率很低。
您无缘无故地在atindex()
中循环,这是无意义的循环,直到i
命中index
为止,您可以使用单个表达式检查index
是否在列表范围内。
QString student::atindex(int index) const {
if (index < list.size()) return list.at(index); // index is in range
else return "Not good!"; // index is out of range - no good
}
关于c++ - 自定义类型Qlist和范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26827878/