ich hatte versucht, eine Liste von abgeleiteten QGraphicsItems, die durch eine Liste von Punkten definiert werden, in eine QSettings ini-Datei zu schreiben.
Das schreiben funktioniert ja, aber das zurücklesen leider nicht.
Ich hab in der Doku nichts darüber gefunden, ob etwa Verschachtelte Arrays nicht unterstützt werden.
Hier die geschriebene ini-Datei:
Code: Alles auswählen
[Cutouts2]
size=2
1\pageName=Seite1
1\Seite1\size=4
1\Seite1\1\scenePoint=@Point(708 1256)
1\Seite1\2\scenePoint=@Point(2365 1296)
1\Seite1\3\scenePoint=@Point(2138 219)
1\Seite1\4\scenePoint=@Point(2403 2697)
2\pageName=Seite2
2\Seite2\size=4
2\Seite2\1\scenePoint=@Point(2436 1544)
2\Seite2\2\scenePoint=@Point(4115 1566)
2\Seite2\3\scenePoint=@Point(3866 256)
2\Seite2\4\scenePoint=@Point(4235 2746)
Code: Alles auswählen
void MainWindow::loadFromDrawingsFile()
{
QString drawingFN = fileName + ".ptp"; // extension stands for photo to page
QSettings set(drawingFN, QSettings::IniFormat, this);
qDebug() << __func__ << " with " << drawingFN;
// delete all drawing items
removeDrawings();
int size = set.beginReadArray("Cutouts2");
qDebug()<<"size = " << size;
for(int i=0; i<size; i++){
set.setArrayIndex(i);
Cutout2Page co;
co.pageName = set.value("pageName").toString();
qDebug()<<"pageName = " << co.pageName;
co.cutout = new Cutout2(0, ui->graphicsView->getScene());
int sizeP = set.beginReadArray(co.pageName);
qDebug()<<"sizeP = " << sizeP;
for(int ii=0; ii<sizeP; ii++){
set.setArrayIndex(ii);
QPointF p = set.value("scenePoint").toPoint();
qDebug()<< "read point["<<ii<<"] = "<<p;
co.cutout->addPoint(p);
}
cutouts2.append(co);
qDebug() << "loaded " << co.cutout;
}
}
Code: Alles auswählen
private:
...
struct Cutout2Page{
Cutout2* cutout;
QString pageName;
};
QList<Cutout2Page> cutouts2;
...
Code: Alles auswählen
loadFromDrawingsFile with "/home/karl/Karl/Literatur/Physik/Effekte der Physik/session 1/ausschuss/062 DSC07286.JPG.ptp"
removeDrawings
size = 2
pageName = "Seite1"
sizeP = 4
read point[ 0 ] = QPointF(708, 1256)
read point[ 1 ] = QPointF(2365, 1296)
read point[ 2 ] = QPointF(2138, 219)
read point[ 3 ] = QPointF(2403, 2697)
loaded QGraphicsItem (this = 0x22fe630 , parent = 0x0 , pos = QPointF(708, 1256) , z = 0 , flags = ( ItemIsMovable | ItemIsSelectable ) )
pageName = ""
sizeP = 0
loaded QGraphicsItem (this = 0x21ac090 , parent = 0x0 , pos = QPointF(0, 0) , z = 0 , flags = ( ItemIsMovable | ItemIsSelectable ) )
Als Workaround werde ich versuchen, die key-struktur selber zu genereieren, und die values so dann wieder auszulesen.
Bemerkenswert ist hier vielleicht, dass für das Hauptarray eine Group angelegt wird ([Cutouts2]) und für das Subarray nicht so direkt. Laut Doku kann man Groups verschachteln, ich hab aber nicht ausprobiert, wie das dann in einem ini-file dargestellt wird.
Ich wünsche allen noch frohe Festtage und einen guten Rutsch ins Jahr 2015
lg, Karl