main.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <QGuiApplication>
  2. #include <QQmlApplicationEngine>
  3. #include <QQmlContext>
  4. #include <QThread>
  5. #include <QSettings>
  6. #include <QSurfaceFormat>
  7. #include <QTimer>
  8. #include <picturemodel.h>
  9. int main(int argc, char *argv[])
  10. {
  11. qsrand(time(NULL));
  12. QGuiApplication app(argc, argv);
  13. app.setOrganizationName("Chaos Reins");
  14. app.setApplicationName("Articulate");
  15. QSettings settings;
  16. if (settings.value("force32bpp", false).toBool()) {
  17. QSurfaceFormat format = QSurfaceFormat::defaultFormat();
  18. format.setAlphaBufferSize(8);
  19. format.setRedBufferSize(8);
  20. format.setGreenBufferSize(8);
  21. format.setBlueBufferSize(8);
  22. if (settings.value("forceSingleBuffer", false).toBool())
  23. format.setSwapBehavior(QSurfaceFormat::SingleBuffer);
  24. QSurfaceFormat::setDefaultFormat(format);
  25. }
  26. QQmlApplicationEngine engine;
  27. QThread scanningThread;
  28. PictureModel *model = new PictureModel();
  29. const QString &artPath = settings.value("artPath","/blackhole/media/art").toString();
  30. model->addSupportedExtension("jpg");
  31. model->moveToThread(&scanningThread);
  32. scanningThread.start();
  33. //QTimer::singleShot(0, model, [model,artPath]() { model->setModelRoot(artPath); });
  34. QMetaObject::invokeMethod(model, "setModelRoot", Qt::QueuedConnection, Q_ARG(QString,artPath));
  35. settings.setValue("artPath", artPath);
  36. engine.rootContext()->setContextProperty("imageModel", model);
  37. engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
  38. QObject::connect(&app, &QGuiApplication::lastWindowClosed, &scanningThread, &QThread::quit);
  39. return app.exec();
  40. }