nightroad
25th August 2011, 09:15
Hello there,
I need a suggestion about file saving-loading, first of all let me explain my case.
I have a QGraphicsView that showing many items in the Scenes. I need to save these QGraphicsItems into file and then i need to load back into Scenes then show these scenes into QgraphicsView.
I've already done saving data into file which is contains serialized QGraphicsItem as a QDataStream and then de-serialized these data into QGraphicsItems and showing into scenes. I'm keeping these data as like xml format let me show piece of my file format.
<!DOCTYPE NIGHTS>
<view>
<scene index="0">
<shape type="65537">AAAAJ0COMAAAAAAAQHtAAAAAAABAjjAAAAAAAEB7MAAAAAAAQI 44AAAAAABAexAAAAAAAECOQAAAAAAAQHsQAAAAAABAjkgAAAAA AEB7AAAAAAAAQI5QAAAAAABAewAAAAAAAECOYAAAAAAAQHrgAA AAAABAjnAAAAAAAEB6sAAAAAAAQI6gAAAAAABAekAAAAAAAECO 2AAAAAAAQHnQAAAAAABAjwAAAAAAAEB5UAAAAAAAQI9AAAAAAA BAeOAAAAAAAECPaAAAAAAAQHhQAAAAAABAj6gAAAAAAEB3sAAA AAAAQI/YAAAAAABAdvAAAAAAAECQBAAAAAAAQHZwAAAAAABAkBAAAAAAA EB14AAAAAAAQJAgAAAAAABAdXAAAAAAAECQMAAAAAAAQHUAAAA AAABAkCgAAAAAAEB1oAAAAAAAQJAoAAAAAABAdnAAAAAAAECQK AAAAAAAQHeAAAAAAABAkCgAAAAAAEB4sAAAAAAAQJAoAAAAAAB AehAAAAAAAECQNAAAAAAAQHtwAAAAAABAkDQAAAAAAEB80AAAA AAAQJA0AAAAAABAfoAAAAAAAECQNAAAAAAAQH+wAAAAAABAkDQ AAAAAAECAiAAAAAAAQJA0AAAAAABAgSAAAAAAAECQNAAAAAAAQ IGgAAAAAABAkDQAAAAAAECCOAAAAAAAQJA0AAAAAABAgsAAAAA AAECQNAAAAAAAQIMYAAAAAABAkDQAAAAAAECDcAAAAAAAQJA8A AAAAABAg8gAAAAAAECQPAAAAAAAQIQwAAAAAABAkDwAAAAAAEC EiAAAAAAAQJA8AAAAAABAhOAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQBAIgAAAAAAAAEB//8AAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAP/AAAAAAAAA=</shape>
</scene>
<scene index="1">
<shape type="65537">AAAAMECMWAAAAAAAQHZgAAAAAABAjOAAAAAAAEB2YAAAAAAAQI 14AAAAAABAdmAAAAAAAECN6AAAAAAAQHZgAAAAAABAjlgAAAAA AEB2YAAAAAAAQI7IAAAAAABAdqAAAAAAAECPOAAAAAAAQHbAAA AAAABAj6gAAAAAAEB3AAAAAAAAQJAEAAAAAABAd2AAAAAAAECQ LAAAAAAAQHeQAAAAAABAkEgAAAAAAEB38AAAAAAAQJBoAAAAAA BAeIAAAAAAAECQdAAAAAAAQHjwAAAAAABAkIQAAAAAAEB50AAA AAAAQJCEAAAAAABAerAAAAAAAECQhAAAAAAAQHvAAAAAAABAkI QAAAAAAEB8kAAAAAAAQJBwAAAAAABAfYAAAAAAAECQWAAAAAAA QH4gAAAAAABAkDgAAAAAAEB/EAAAAAAAQJAgAAAAAABAf6AAAAAAAECP8AAAAAAAQIA4AAAAAA BAj6gAAAAAAECAmAAAAAAAQI9oAAAAAABAgOgAAAAAAECPQAAA AAAAQIEgAAAAAABAjxAAAAAAAECBaAAAAAAAQI7YAAAAAABAga gAAAAAAECOwAAAAAAAQIHgAAAAAABAjqgAAAAAAECCIAAAAAAA QI6gAAAAAABAgmgAAAAAAECO0AAAAAAAQIKYAAAAAABAjwAAAA AAAECC0AAAAAAAQI8wAAAAAABAgvAAAAAAAECPkAAAAAAAQIMg AAAAAABAj/AAAAAAAECDUAAAAAAAQJAsAAAAAABAg4AAAAAAAECQcAAAAAAA QIOwAAAAAABAkLwAAAAAAECDwAAAAAAAQJEAAAAAAABAg/gAAAAAAECRUAAAAAAAQIQYAAAAAABAkbQAAAAAAECEQAAAAAAA QJIMAAAAAABAhGAAAAAAAECSXAAAAAAAQISYAAAAAABAkqgAAA AAAECEmAAAAAAAQJL0AAAAAABAhLgAAAAAAECTLAAAAAAAQIS4 AAAAAABAk1wAAAAAAECEyAAAAAAAQJOIAAAAAABAhNgAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQBAIgAAAAAAAAEB//8AAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAP/AAAAAAAAA=</shape>
</scene>
<scene index="2">
<shape type="65537">AAAALECMAAAAAAAAQHegAAAAAABAjDgAAAAAAEB3UAAAAAAAQI yYAAAAAABAdtAAAAAAAECNIAAAAAAAQHaQAAAAAABAjcAAAAAA AEB2IAAAAAAAQI6IAAAAAABAdeAAAAAAAECPOAAAAAAAQHXgAA AAAABAkAgAAAAAAEB1sAAAAAAAQJBoAAAAAABAdbAAAAAAAECQ wAAAAAAAQHWwAAAAAABAkQQAAAAAAEB1sAAAAAAAQJEwAAAAAA BAdbAAAAAAAECRVAAAAAAAQHXwAAAAAABAkUAAAAAAAEB2UAAA AAAAQJEsAAAAAABAdsAAAAAAAECREAAAAAAAQHdAAAAAAABAkP AAAAAAAEB4AAAAAAAAQJDQAAAAAABAeKAAAAAAAECQrAAAAAAA QHmQAAAAAABAkJwAAAAAAEB6oAAAAAAAQJCUAAAAAABAe9AAAA AAAECQoAAAAAAAQH0wAAAAAABAkLwAAAAAAEB+cAAAAAAAQJDo AAAAAABAf7AAAAAAAECRPAAAAAAAQICAAAAAAABAkZgAAAAAAE CBGAAAAAAAQJH8AAAAAABAgbAAAAAAAECSVAAAAAAAQIIgAAAA AABAkrAAAAAAAECCkAAAAAAAQJL4AAAAAABAgugAAAAAAECTFA AAAAAAQIMgAAAAAABAkygAAAAAAECDSAAAAAAAQJM4AAAAAABA g4AAAAAAAECTLAAAAAAAQIO4AAAAAABAkwgAAAAAAECDyAAAAA AAQJLcAAAAAABAg9gAAAAAAECSmAAAAAAAQIPoAAAAAABAklgA AAAAAECD+AAAAAAAQJIIAAAAAABAhBgAAAAAAECRvAAAAAAAQI QYAAAAAABAkYwAAAAAAECEKAAAAAAAQJFUAAAAAABAhEgAAAAA AECRJAAAAAAAQIRoAAAAAABAkPAAAAAAAECEkAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChAEAiAAAAAAAAAQH//wAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAA/8AAAAAAAAA==</shape>
</scene>
</view>
So there is element text which is base64 Binary data so i'm easily convertin that data into QDataStream then de-serializing QgraphicsItems.
Now, questions coming :) , Firstly That approac does make sense to you ? IF it didn't please could you give me better suggestion i can follow.
Second question when i save the QgraphicsItems into file or Loading back in that steps; as i said before, there is a lot of QGI almost 10k around. My gui is blocking event loop as you guess. But i'm not so experienced with QThreads could you give me clue, how can i pass data from Worker thread to Gui thread, in my situation.
Thanks, any suggestion is welcomed.
I need a suggestion about file saving-loading, first of all let me explain my case.
I have a QGraphicsView that showing many items in the Scenes. I need to save these QGraphicsItems into file and then i need to load back into Scenes then show these scenes into QgraphicsView.
I've already done saving data into file which is contains serialized QGraphicsItem as a QDataStream and then de-serialized these data into QGraphicsItems and showing into scenes. I'm keeping these data as like xml format let me show piece of my file format.
<!DOCTYPE NIGHTS>
<view>
<scene index="0">
<shape type="65537">AAAAJ0COMAAAAAAAQHtAAAAAAABAjjAAAAAAAEB7MAAAAAAAQI 44AAAAAABAexAAAAAAAECOQAAAAAAAQHsQAAAAAABAjkgAAAAA AEB7AAAAAAAAQI5QAAAAAABAewAAAAAAAECOYAAAAAAAQHrgAA AAAABAjnAAAAAAAEB6sAAAAAAAQI6gAAAAAABAekAAAAAAAECO 2AAAAAAAQHnQAAAAAABAjwAAAAAAAEB5UAAAAAAAQI9AAAAAAA BAeOAAAAAAAECPaAAAAAAAQHhQAAAAAABAj6gAAAAAAEB3sAAA AAAAQI/YAAAAAABAdvAAAAAAAECQBAAAAAAAQHZwAAAAAABAkBAAAAAAA EB14AAAAAAAQJAgAAAAAABAdXAAAAAAAECQMAAAAAAAQHUAAAA AAABAkCgAAAAAAEB1oAAAAAAAQJAoAAAAAABAdnAAAAAAAECQK AAAAAAAQHeAAAAAAABAkCgAAAAAAEB4sAAAAAAAQJAoAAAAAAB AehAAAAAAAECQNAAAAAAAQHtwAAAAAABAkDQAAAAAAEB80AAAA AAAQJA0AAAAAABAfoAAAAAAAECQNAAAAAAAQH+wAAAAAABAkDQ AAAAAAECAiAAAAAAAQJA0AAAAAABAgSAAAAAAAECQNAAAAAAAQ IGgAAAAAABAkDQAAAAAAECCOAAAAAAAQJA0AAAAAABAgsAAAAA AAECQNAAAAAAAQIMYAAAAAABAkDQAAAAAAECDcAAAAAAAQJA8A AAAAABAg8gAAAAAAECQPAAAAAAAQIQwAAAAAABAkDwAAAAAAEC EiAAAAAAAQJA8AAAAAABAhOAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQBAIgAAAAAAAAEB//8AAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAP/AAAAAAAAA=</shape>
</scene>
<scene index="1">
<shape type="65537">AAAAMECMWAAAAAAAQHZgAAAAAABAjOAAAAAAAEB2YAAAAAAAQI 14AAAAAABAdmAAAAAAAECN6AAAAAAAQHZgAAAAAABAjlgAAAAA AEB2YAAAAAAAQI7IAAAAAABAdqAAAAAAAECPOAAAAAAAQHbAAA AAAABAj6gAAAAAAEB3AAAAAAAAQJAEAAAAAABAd2AAAAAAAECQ LAAAAAAAQHeQAAAAAABAkEgAAAAAAEB38AAAAAAAQJBoAAAAAA BAeIAAAAAAAECQdAAAAAAAQHjwAAAAAABAkIQAAAAAAEB50AAA AAAAQJCEAAAAAABAerAAAAAAAECQhAAAAAAAQHvAAAAAAABAkI QAAAAAAEB8kAAAAAAAQJBwAAAAAABAfYAAAAAAAECQWAAAAAAA QH4gAAAAAABAkDgAAAAAAEB/EAAAAAAAQJAgAAAAAABAf6AAAAAAAECP8AAAAAAAQIA4AAAAAA BAj6gAAAAAAECAmAAAAAAAQI9oAAAAAABAgOgAAAAAAECPQAAA AAAAQIEgAAAAAABAjxAAAAAAAECBaAAAAAAAQI7YAAAAAABAga gAAAAAAECOwAAAAAAAQIHgAAAAAABAjqgAAAAAAECCIAAAAAAA QI6gAAAAAABAgmgAAAAAAECO0AAAAAAAQIKYAAAAAABAjwAAAA AAAECC0AAAAAAAQI8wAAAAAABAgvAAAAAAAECPkAAAAAAAQIMg AAAAAABAj/AAAAAAAECDUAAAAAAAQJAsAAAAAABAg4AAAAAAAECQcAAAAAAA QIOwAAAAAABAkLwAAAAAAECDwAAAAAAAQJEAAAAAAABAg/gAAAAAAECRUAAAAAAAQIQYAAAAAABAkbQAAAAAAECEQAAAAAAA QJIMAAAAAABAhGAAAAAAAECSXAAAAAAAQISYAAAAAABAkqgAAA AAAECEmAAAAAAAQJL0AAAAAABAhLgAAAAAAECTLAAAAAAAQIS4 AAAAAABAk1wAAAAAAECEyAAAAAAAQJOIAAAAAABAhNgAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQBAIgAAAAAAAAEB//8AAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAP/AAAAAAAAA=</shape>
</scene>
<scene index="2">
<shape type="65537">AAAALECMAAAAAAAAQHegAAAAAABAjDgAAAAAAEB3UAAAAAAAQI yYAAAAAABAdtAAAAAAAECNIAAAAAAAQHaQAAAAAABAjcAAAAAA AEB2IAAAAAAAQI6IAAAAAABAdeAAAAAAAECPOAAAAAAAQHXgAA AAAABAkAgAAAAAAEB1sAAAAAAAQJBoAAAAAABAdbAAAAAAAECQ wAAAAAAAQHWwAAAAAABAkQQAAAAAAEB1sAAAAAAAQJEwAAAAAA BAdbAAAAAAAECRVAAAAAAAQHXwAAAAAABAkUAAAAAAAEB2UAAA AAAAQJEsAAAAAABAdsAAAAAAAECREAAAAAAAQHdAAAAAAABAkP AAAAAAAEB4AAAAAAAAQJDQAAAAAABAeKAAAAAAAECQrAAAAAAA QHmQAAAAAABAkJwAAAAAAEB6oAAAAAAAQJCUAAAAAABAe9AAAA AAAECQoAAAAAAAQH0wAAAAAABAkLwAAAAAAEB+cAAAAAAAQJDo AAAAAABAf7AAAAAAAECRPAAAAAAAQICAAAAAAABAkZgAAAAAAE CBGAAAAAAAQJH8AAAAAABAgbAAAAAAAECSVAAAAAAAQIIgAAAA AABAkrAAAAAAAECCkAAAAAAAQJL4AAAAAABAgugAAAAAAECTFA AAAAAAQIMgAAAAAABAkygAAAAAAECDSAAAAAAAQJM4AAAAAABA g4AAAAAAAECTLAAAAAAAQIO4AAAAAABAkwgAAAAAAECDyAAAAA AAQJLcAAAAAABAg9gAAAAAAECSmAAAAAAAQIPoAAAAAABAklgA AAAAAECD+AAAAAAAQJIIAAAAAABAhBgAAAAAAECRvAAAAAAAQI QYAAAAAABAkYwAAAAAAECEKAAAAAAAQJFUAAAAAABAhEgAAAAA AECRJAAAAAAAQIRoAAAAAABAkPAAAAAAAECEkAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChAEAiAAAAAAAAAQH//wAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAA/8AAAAAAAAA==</shape>
</scene>
</view>
So there is element text which is base64 Binary data so i'm easily convertin that data into QDataStream then de-serializing QgraphicsItems.
Now, questions coming :) , Firstly That approac does make sense to you ? IF it didn't please could you give me better suggestion i can follow.
Second question when i save the QgraphicsItems into file or Loading back in that steps; as i said before, there is a lot of QGI almost 10k around. My gui is blocking event loop as you guess. But i'm not so experienced with QThreads could you give me clue, how can i pass data from Worker thread to Gui thread, in my situation.
Thanks, any suggestion is welcomed.