qgraphicsscene save all items to file

48

QVariant item_to_variant(QGraphicsItem* item) {
  QVariantHash data;
  //save all needed attributes
  data["pos"] = item->pos();
  data["rotation"] = item->rotation();
  if(QGraphicsPixmapItem* pixmap_item = dynamic_cast<QGraphicsPixmapItem*>(item)) {
    data["type"] = "pixmap";
    data["pixmap"] = pixmap_item->pixmap();
  } else { /*...*/ }
 //...
  return data;
}

QGraphicsItem* item_from_variant(QVariant v) {
  QVariantHash data = v.toHash();
  QGraphicsItem* result;
  if (data["type"].toString() == "pixmap") {
    result = new QGraphicsPixmapItem();
    result->setPixmap(data["pixmap"].value<QPixmap>());
  } else { /*...*/ }
  result->setPos(data["pos"].toPointf());
  result->setRotation(data["rotation"].toDouble());
  //...
  return result;
}

void save_state() {
  QVariantList data_list;
  foreach(QGraphicsItem* item, items_list) {
    data_list << item_to_variant(item);
  }
  QSettings settings;
  settings.setValue("items", data_list);
}

void restore_state() {
  QSettings settings;
  foreach(QVariant data, settings.value("items").toList()) {
    QGraphicsItem* item = item_from_variant(data);
    scene->addItem(item);
    items_list << item;
  }

}

Comments

Submit
0 Comments

More Questions

boolean in crandom number c ModuleNotFoundError: No module named cv2
check dns server in linuxread files in c how to get user input in c
print boolean value in clatex font sizes see if two strings are equal in C
how to download file in powershellprintf with bool invoke-webrequest download file
write in file in cmongodb delete all documents how to genrate a random number in C
how to print boolean in csleep in c programming install zoom on ubuntu
c concatenate stringstake array as input in c install gitk mac
remove element from np arrayprint an array in c C static libraries (creating object files)
exponentials in cC++ initalize int16_t value script hack blox fruti
pointer operatorcheck command line input is a number in c what is covert channel
sqlserver insert with set identity-usr-bin-env: python-r: No such file or directory linear search program in c
Uri-beecrowd problem no - 1099 solution in Cc addition The fscanf and fprintf functions
function that reverses the content of an array of integers.how to search in a file in c Couldnt create temporary file to work with
WARNING: QA Issue: bgslibrary-dev rdepends on libopencv-imgproc, but it isnt a build dependency, missing opencv in DEPENDS or PACKAGECONFIG [build-deps]reading arrays from stdin c add a item to cart woocomerce with quantity
Using PostgreSQL array to store many-to-many relationship using sqlalchemylistas enlazadas- linked lists binary sorting
c how to include variables of other c filec strcat uri-beecrowd problem no - 1133 solution in C