| 968 | } |
| 969 | |
| 970 | void LogQtInfo() |
| 971 | { |
| 972 | #ifdef QT_STATIC |
| 973 | const std::string qt_link{"static"}; |
| 974 | #else |
| 975 | const std::string qt_link{"dynamic"}; |
| 976 | #endif |
| 977 | #ifdef QT_STATICPLUGIN |
| 978 | const std::string plugin_link{"static"}; |
| 979 | #else |
| 980 | const std::string plugin_link{"dynamic"}; |
| 981 | #endif |
| 982 | LogPrintf("Qt %s (%s), plugin=%s (%s)\n", qVersion(), qt_link, QGuiApplication::platformName().toStdString(), plugin_link); |
| 983 | const auto static_plugins = QPluginLoader::staticPlugins(); |
| 984 | if (static_plugins.empty()) { |
| 985 | LogPrintf("No static plugins.\n"); |
| 986 | } else { |
| 987 | LogPrintf("Static plugins:\n"); |
| 988 | for (const QStaticPlugin& p : static_plugins) { |
| 989 | QJsonObject meta_data = p.metaData(); |
| 990 | const std::string plugin_class = meta_data.take(QString("className")).toString().toStdString(); |
| 991 | const int plugin_version = meta_data.take(QString("version")).toInt(); |
| 992 | LogPrintf(" %s, version %d\n", plugin_class, plugin_version); |
| 993 | } |
| 994 | } |
| 995 | |
| 996 | LogPrintf("Style: %s / %s\n", QApplication::style()->objectName().toStdString(), QApplication::style()->metaObject()->className()); |
| 997 | LogPrintf("System: %s, %s\n", QSysInfo::prettyProductName().toStdString(), QSysInfo::buildAbi().toStdString()); |
| 998 | for (const QScreen* s : QGuiApplication::screens()) { |
| 999 | LogPrintf("Screen: %s %dx%d, pixel ratio=%.1f\n", s->name().toStdString(), s->size().width(), s->size().height(), s->devicePixelRatio()); |
| 1000 | } |
| 1001 | } |
| 1002 | |
| 1003 | void PopupMenu(QMenu* menu, const QPoint& point, QAction* at_action) |
| 1004 | { |