我正在尝试将包含QStrings Qlist的学生类型的对象附加到学生类型的Qlist中,我已经验证了Qstrings在一个阶段被添加到学生对象中,但是当我在某个阶段它们似乎是空的转到下面的代码;
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的相关部分
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!";
}
- 的 student.h
#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
输出继电器:
&#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不 好!#&34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不好!&#34; &#34;不 好!&#34;
答案 0 :(得分:1)
动态分配列表完全没有意义甚至效率低,而是使用QList<QString> list;
,将list->
更改为list.
,将*list
更改为list
您在[{1}}中无理由循环,在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
}