Does not open file in Qt
-
Hi!
I'm trying to open and read an .obj file but i am unable to do so.
My code is
My problem is that in the first If it returns false and I don't know why.
My file is in the .qrc and also in the path ("Users/carolina/unchocolatito2").
If someone could help it would be great -
Hi
Are you sure path is correct ?I feel it should be "/Users/carolina/unchocolatito2"
-
Hi! Thank you for replying me. I have changed what you said but it still doesn't work.
-
@Carolinabustillo
Ok not sure what linux you are on, my Users folder is called homeIf you open shell
and do
cd /Users/carolina/unchocolatito2
does that work? ( meaning it change to there)If you put file in a qres file. then find file in Creator, and right click it. You can
the copy path.And use that ":/xxxx" path where you have todojuntolabio.obj now
-
Thank you so much. My computer is a macOs but I just did what you said about copying the path and now it works.
Now I have this problem.
When I try to click in qvector.h it says that the file doesn't exist or I don't have permission -
@Carolinabustillo
Hi
It says you are using a vector.at(XXX) where xxx is larger than the numbers of items in the list
(or list is empty )Can you paste the code ? ( the image only shows top of it)
( you can just use the </> button in editor and paste the real code ) -
@mrjj here it is
void QObj3dReader::parseObjFile(const QString &fileName, QStringList &comments, QVector<QOpenGLTriangle3D> &triangles) { comments.clear(); triangles.clear(); QFile file(fileName); if(file.exists()) { if(file.open(QFile::ReadOnly | QFile::Text)) { QVector<QVector3D> v, vn; qDebug() << "se abre"; while(!file.atEnd()) { QString line = file.readLine().trimmed(); QStringList lineParts = line.split(QRegularExpression("\\s+")); if(lineParts.count() > 0) { // if it's a comment if(lineParts.at(0).compare("#", Qt::CaseInsensitive) == 0) { comments.append(line.remove(0, 1).trimmed()); } // if it's a vertex position (v) else if(lineParts.at(0).compare("v", Qt::CaseInsensitive) == 0) { v.append(QVector3D(lineParts.at(1).toFloat(), lineParts.at(2).toFloat(), lineParts.at(3).toFloat())); } // if it's face data (f) // there's an assumption here that faces are all triangles else if(lineParts.at(0).compare("f", Qt::CaseInsensitive) == 0) { QOpenGLTriangle3D triangle; // get points from v array triangle.p1 = v.at(lineParts.at(1).split("/").at(0).toInt() - 1); triangle.p2 = v.at(lineParts.at(2).split("/").at(0).toInt() - 1); triangle.p3 = v.at(lineParts.at(3).split("/").at(0).toInt() - 1); // get normals from vn array triangle.p1Normal = vn.at(lineParts.at(1).split("/").at(2).toInt() - 1); triangle.p2Normal = vn.at(lineParts.at(2).split("/").at(2).toInt() - 1); triangle.p3Normal = vn.at(lineParts.at(3).split("/").at(2).toInt() - 1); triangles.append(triangle); } } } file.close(); } } }
-
Thank you so much!!
I was trying different ways to try to open a file that doing copy and paste I forgot some lines of the code. Now it works. -
@Carolinabustillo
Super :)
Notice that
lines such at
lineParts.at(1).split("/").at(2)
will give same kind of error if format is different and split returns an empty list.