From 15cc7089b748d29f50a6f2b8777a415ea39d7103 Mon Sep 17 00:00:00 2001 From: Peter Droste Date: Fri, 2 Sep 2022 08:23:00 +0200 Subject: [PATCH] Patch version 6.3.4 Bugfix Issue #73 Bugfix Issue #72 Bugfix Issue #71 --- README.md | 6 +- autotestlib/autotestlib.pro | 9 +- build.xml | 2 +- build_autotests.xml | 136 +- generator/abstractmetabuilder.cpp | 194 +- generator/abstractmetabuilder.h | 3 + generator/javagenerator.cpp | 19 +- generator/targets/qtjambi_masterinclude.h | 2 + .../typesystem/java/typesystem_core-java.java | 34 +- .../java/typesystem_httpserver-java.java | 99 - .../typesystem/java/typesystem_qml-java.java | 108 + .../java/typesystem_webenginequick-java.java | 55 + generator/typesystem/typedatabase.cpp | 10 +- generator/typesystem/typedatabase.h | 14 +- generator/typesystem/typeentry.cpp | 8 +- .../typesystem/xml/typesystem_core-common.xml | 11 +- .../typesystem/xml/typesystem_core-java.xml | 66 +- .../typesystem/xml/typesystem_gui-common.xml | 1 + .../typesystem/xml/typesystem_gui-java.xml | 8 +- .../xml/typesystem_httpserver-common.xml | 18 +- .../xml/typesystem_httpserver-java.xml | 114 +- .../typesystem/xml/typesystem_qml-common.xml | 3 +- .../typesystem/xml/typesystem_qml-java.xml | 11 + .../xml/typesystem_quick-common.xml | 12 +- .../typesystem/xml/typesystem_quick-java.xml | 3 + .../typesystem/xml/typesystem_test-java.xml | 18 + .../xml/typesystem_webengine-common.xml | 2 + .../xml/typesystem_webengine-java.xml | 28 + .../xml/typesystem_webenginecore-common.xml | 1 + .../xml/typesystem_webenginequick-common.xml | 2 + .../xml/typesystem_webenginequick-java.xml | 36 + releases.properties | 6 +- src/cpp/qtjambi/qnativepointer.cpp | 5 - src/cpp/qtjambi/qtjambi_containers.cpp | 4 - src/cpp/qtjambi/qtjambi_core.cpp | 99 +- src/cpp/qtjambi/qtjambi_functions.cpp | 135 +- src/cpp/qtjambi/qtjambi_future.cpp | 51 +- src/cpp/qtjambi/qtjambi_plugin.cpp | 4 - src/cpp/qtjambi/qtjambi_registry.cpp | 46 + src/cpp/qtjambi/qtjambi_registry_p.h | 1 + src/cpp/qtjambi/qtjambi_thread.cpp | 4 - src/cpp/qtjambi/qtjambi_typeinfo.cpp | 4 - src/cpp/qtjambi/qtjambilink.cpp | 425 ++- src/cpp/qtjambi/qtjambilink_p.h | 53 +- src/cpp/qtjambi/qtjambimetaobject.cpp | 15 +- src/cpp/qtjambi/qtjambisignals.cpp | 47 +- src/cpp/qtjambi/qtjambitypemanager.cpp | 69 +- src/cpp/qtjambi_core/qtjambi_core_util.cpp | 53 + src/cpp/qtjambi_dbus/QDBusVariantReply.cpp | 11 + .../qtjambi_httpserver/qtjambi_httpserver.cpp | 5 +- src/cpp/qtjambi_qml/qmlregistry.cpp | 245 ++ src/cpp/qtjambi_quick/qtjambi_quick_hashes.h | 223 +- .../qtjambi_qwebenginecore_hashes.h | 2 +- .../qtjambi_webenginequick.cpp | 56 + .../qtjambi_webenginequick.pro | 5 +- .../io/qt/tools/ant/FindCompiler.java | 69 +- .../io/qt/tools/ant/InitializeBuildTask.java | 1 + .../qt/autotests/ApplicationInitializer.java | 14 +- src/java/autotest/io/qt/autotests/Content.txt | 1800 ++++++++++++ .../io/qt/autotests/TestDesignerQuick.java | 1 - .../io/qt/autotests/TestInjectedCode.java | 15 +- .../autotest/io/qt/autotests/TestQml.java | 11 +- .../io/qt/autotests/TestQmlPlugin.java | 18 +- .../autotest/io/qt/autotests/TestQmlQt6.java | 52 + .../autotest/io/qt/autotests/TestThreads.java | 3 + .../qt/autotests/TestWebEngineQuickQt5.java | 109 + .../qt/autotests/TestWebEngineQuickQt6.java | 125 + .../io/qt/autotests/TestWebEngineWidgets.java | 37 +- .../autotest/io/qt/autotests/resources.jar | Bin 37021 -> 162706 bytes src/java/qtjambi-modules/modules.xml | 12 +- .../qtjambi/main/io/qt/core/QMetaObject.java | 30 +- .../main/io/qt/internal/QtJambiInternal.java | 70 +- .../main/io/qt/internal/QtJambiSignals.java | 30 +- src/java/qtjambi-plugins/plugins.xml | 147 +- src/java/qtjambi-qml/qml.xml | 162 +- www/Android.md | 4 +- www/Characteristics-of-QtJambi.md | 10 +- www/How-to-bundle-Qt-libraries.md | 4 +- www/How-to-deploy-QtJambi-applications.md | 30 +- www/How-to-develop-Qt-in-Java.md | 14 +- www/Modules.md | 2618 ++++++++--------- www/Whats-New.md | 19 +- 82 files changed, 5583 insertions(+), 2423 deletions(-) create mode 100644 generator/typesystem/java/typesystem_webenginequick-java.java create mode 100644 src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.cpp create mode 100644 src/java/autotest/io/qt/autotests/Content.txt create mode 100644 src/java/autotest/io/qt/autotests/TestQmlQt6.java create mode 100644 src/java/autotest/io/qt/autotests/TestWebEngineQuickQt5.java create mode 100644 src/java/autotest/io/qt/autotests/TestWebEngineQuickQt6.java diff --git a/README.md b/README.md index e4f89050..a4174544 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ to your project: $VERSION ``` -(exchange `$VERSION` either by `5.15.8`, `6.2.6` or by `6.3.3`). +(exchange `$VERSION` either by `5.15.9`, `6.2.7` or by `6.3.4`). Otherwise, download QtJambi JAR file from [Maven Central Repository](https://search.maven.org/artifact/io.qtjambi/qtjambi/). @@ -120,7 +120,7 @@ public class Test { Compile the file: ``` powershell -javac -cp qtjambi-6.3.3.jar Test.java +javac -cp qtjambi-6.3.4.jar Test.java ``` ### Execute Example @@ -135,7 +135,7 @@ Therefore, use the PATH environment (LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH or the Java runtime property java.library.path. The example program can be executed this way: ``` -java -cp qtjambi-6.3.3.jar;. -Djava.library.path=C:\Qt\6.3.1\msvc2019_64\bin Test +java -cp qtjambi-6.3.4.jar;. -Djava.library.path=C:\Qt\6.3.1\msvc2019_64\bin Test ``` (On macOS you additionally need to use the start parameter -XstartOnFirstThread) diff --git a/autotestlib/autotestlib.pro b/autotestlib/autotestlib.pro index a3670458..1c7b2360 100644 --- a/autotestlib/autotestlib.pro +++ b/autotestlib/autotestlib.pro @@ -21,7 +21,14 @@ include(../src/cpp/qtjambi/qtjambi_include.pri) exists($$QTJAMBI_BUILDDIR/tests/autotest-generator/cpp/io_qt_autotests_generated): include($$QTJAMBI_BUILDDIR/tests/autotest-generator/cpp/io_qt_autotests_generated/generated.pri) -DESTDIR = ../lib +android:{ + armeabi-v7a: DESTDIR = ../lib/armeabi-v7a + arm64-v8a: DESTDIR = ../lib/arm64-v8a + x86: DESTDIR = ../lib/x86 + x86_64: DESTDIR = ../lib/x86_64 +}else{ + DESTDIR = ../lib +} INCLUDEPATH += ./cpp/io_qt_autotests_generated diff --git a/build.xml b/build.xml index 56edf7ec..d1ef62f2 100644 --- a/build.xml +++ b/build.xml @@ -321,7 +321,7 @@ Further options: description="Runs tests and generates report in TestReport subdir"> - + diff --git a/build_autotests.xml b/build_autotests.xml index c4a358b2..ade15a04 100644 --- a/build_autotests.xml +++ b/build_autotests.xml @@ -141,15 +141,15 @@ - - + + - - + + @@ -221,22 +221,70 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -255,15 +303,15 @@ - - + + - - + + @@ -306,6 +354,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -416,7 +491,8 @@ - + + @@ -460,7 +536,8 @@ - + + @@ -517,7 +594,7 @@ - + @@ -528,12 +605,12 @@ - + - + @@ -541,7 +618,8 @@ - + + @@ -557,11 +635,11 @@ - + - + @@ -569,7 +647,7 @@ - + @@ -713,7 +791,7 @@ - + diff --git a/generator/abstractmetabuilder.cpp b/generator/abstractmetabuilder.cpp index 006fa55c..28143345 100644 --- a/generator/abstractmetabuilder.cpp +++ b/generator/abstractmetabuilder.cpp @@ -762,6 +762,75 @@ bool AbstractMetaBuilder::build() { } } + for(auto function_item : m_dom->functions()){ + QString _function_name = function_item->name(); + QStringList tparams; + for(TemplateParameterModelItem t : function_item->templateParameters()){ + tparams << t->name(); + } + if(!tparams.isEmpty()) + _function_name += "<" + tparams.join(", ") + ">"; + _function_name += "("; + int counter = 0; + for(ArgumentModelItem arg : function_item->arguments()){ + if(arg->type().getReferenceType()==TypeInfo::NoReference + && arg->type().indirections().isEmpty() + && function_item->arguments().size()==1 + && arg->type().toString()=="void"){ + continue; + } + if(counter!=0){ + _function_name += ", "; + } + if(arg->type().isConstant()) + _function_name += "const "; + _function_name += arg->type().qualifiedName().join("::"); + for(bool i : arg->type().indirections()){ + if(i) + _function_name += " const"; + _function_name += "*"; + } + switch(arg->type().getReferenceType()){ + case TypeInfo::Reference: + _function_name += "&"; + break; + case TypeInfo::RReference: + _function_name += "&&"; + break; + default: break; + } + ++counter; + } + _function_name += ") "; + if(function_item->isConstant()) + _function_name += "const "; + if(function_item->referenceType()==TypeInfo::Reference) + _function_name += "& "; + _function_name += "-> "; + if(function_item->type().isConstant()) + _function_name += "const "; + _function_name += function_item->type().qualifiedName().join("::"); + for(bool i : function_item->type().indirections()){ + if(i) + _function_name += " const"; + _function_name += "*"; + } + switch(function_item->type().getReferenceType()){ + case TypeInfo::Reference: + _function_name += "&"; + break; + case TypeInfo::RReference: + _function_name += "&&"; + break; + default: break; + } + if(!function_item->templateParameters().isEmpty()){ + m_rejected_template_functions.insert({_function_name, function_item->fileName()}, IsGlobal); + }else{ + m_rejected_functions.insert({_function_name, function_item->fileName()}, IsGlobal); + } + } + for(AbstractMetaEnum *enm : qAsConst(m_scopeChangedEnums)){ if(AbstractMetaClass *cls = m_meta_classes.findClass(enm->typeEntry()->javaScope(), AbstractMetaClassList::QualifiedCppName)){ if(cls!=enm->enclosingClass()){ @@ -997,8 +1066,6 @@ bool AbstractMetaBuilder::build() { void AbstractMetaBuilder::applyDocs(const DocModel* docModel){ if(docModel){ - static TypeEntry* qstringType = TypeDatabase::instance()->findType("QtJambiString"); - static TypeEntry* qcharType = TypeDatabase::instance()->findType("QtJambiChar"); QHash> analyzedTypes; AbstractMetaFunctionalList meta_functionals = m_meta_functionals; for(AbstractMetaClass *meta_class : m_meta_classes) { @@ -1071,8 +1138,8 @@ void AbstractMetaBuilder::applyDocs(const DocModel* docModel){ break; }else{ if(type->typeEntry()!=argument->type()->typeEntry() - && !(type->typeEntry()->isQString() && argument->type()->typeEntry()==qstringType) - && !(type->typeEntry()->isChar() && argument->type()->typeEntry()==qcharType)){ + && !(type->typeEntry()->isQString() && argument->type()->typeEntry()==TypeDatabase::instance()->qstringType()) + && !(type->typeEntry()->isChar() && argument->type()->typeEntry()==TypeDatabase::instance()->qcharType())){ ok = false; break; } @@ -1202,8 +1269,8 @@ void AbstractMetaBuilder::applyDocs(const DocModel* docModel){ break; }else{ if(type->typeEntry()!=argument->type()->typeEntry() - && !(type->typeEntry()->isQString() && argument->type()->typeEntry()==qstringType) - && !(type->typeEntry()->isChar() && argument->type()->typeEntry()==qcharType)){ + && !(type->typeEntry()->isQString() && argument->type()->typeEntry()==TypeDatabase::instance()->qstringType()) + && !(type->typeEntry()->isChar() && argument->type()->typeEntry()==TypeDatabase::instance()->qcharType())){ ok = false; break; } @@ -3779,10 +3846,11 @@ AbstractMetaClass *AbstractMetaBuilder::traverseClass(ClassModelItem class_item) ComplexTypeEntry *type = TypeDatabase::instance()->findComplexType(full_class_name); if(type){ - if(type->isQString()) - type = TypeDatabase::instance()->findComplexType("QtJambiString"); - else if(type->isChar()) - type = TypeDatabase::instance()->findComplexType("QtJambiChar"); + if(type->isQString() && TypeDatabase::instance()->qstringType()){ + type = TypeDatabase::instance()->qstringType(); + }else if(type->isChar() && TypeDatabase::instance()->qcharType()){ + type = TypeDatabase::instance()->qcharType(); + } } if(type && type->designatedInterface()) type = type->designatedInterface(); @@ -4765,13 +4833,17 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu return nullptr; if(function_item->name()=="static_assert") return nullptr; - static TypeEntry* qstringType = TypeDatabase::instance()->findType("QtJambiString"); - static TypeEntry* qcharType = TypeDatabase::instance()->findType("QtJambiChar"); const ArgumentList& arguments = function_item->arguments(); QString function_name = function_item->name(); QString class_name = m_current_class->typeEntry()->qualifiedCppName(); QString _function_name = function_name; + QStringList tparams; + for(TemplateParameterModelItem t : function_item->templateParameters()){ + tparams << t->name(); + } + if(!tparams.isEmpty()) + _function_name += "<" + tparams.join(", ") + ">"; _function_name += "("; int counter = 0; for(ArgumentModelItem arg : arguments){ @@ -4828,7 +4900,14 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu } if (TypeDatabase::instance()->isFunctionRejected(class_name, function_name)) { - m_rejected_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + if(function_item->functionType() == CodeModel::Signal + || function_item->functionType() == CodeModel::PrivateSignal){ + m_rejected_signals.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + }else if(!function_item->templateParameters().isEmpty()){ + m_rejected_template_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + }else{ + m_rejected_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + } return nullptr; } @@ -4949,21 +5028,29 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu } type = translateType(function_type, &ok, QString("traverseFunction %1.%2").arg(class_name).arg(function_name)); if(type){ - if(type->typeEntry()->isQString() && m_current_class && m_current_class->typeEntry()==qstringType){ - type->setTypeEntry(qstringType); - }else if(type->typeEntry()->isChar() && m_current_class && m_current_class->typeEntry()==qcharType){ - type->setTypeEntry(qcharType); + if(type->typeEntry()->isQString() && m_current_class && m_current_class->typeEntry()==TypeDatabase::instance()->qstringType()){ + type->setTypeEntry(TypeDatabase::instance()->qstringType()); + }else if(type->typeEntry()->isChar() && m_current_class && m_current_class->typeEntry()==TypeDatabase::instance()->qcharType()){ + type->setTypeEntry(TypeDatabase::instance()->qcharType()); } } } if (!ok) { - ReportHandler::warning(QString("skipping function '%1::%2', unmatched return type '%3'") - .arg(class_name) - .arg(function_item->name()) - .arg(function_item->type().toString())); - m_rejected_functions[{class_name + "::" + _function_name, function_item->fileName()}] = - UnmatchedReturnType; + if(function_item->functionType() == CodeModel::Signal + || function_item->functionType() == CodeModel::PrivateSignal){ + ReportHandler::warning(QString("skipping signal '%1::%2', unmatched return type '%3'") + .arg(class_name, function_item->name(), function_item->type().toString())); + m_rejected_signals[{class_name + "::" + _function_name, function_item->fileName()}] = UnmatchedReturnType; + }else if(!function_item->templateParameters().isEmpty()){ + ReportHandler::warning(QString("skipping function '%1::%2<%3>', unmatched return type '%4'") + .arg(class_name, function_item->name(), tparams.join(", "), function_item->type().toString())); + m_rejected_template_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, UnmatchedReturnType); + }else{ + ReportHandler::warning(QString("skipping function '%1::%2', unmatched return type '%3'") + .arg(class_name, function_item->name(), function_item->type().toString())); + m_rejected_functions[{class_name + "::" + _function_name, function_item->fileName()}] = UnmatchedReturnType; + } meta_function->setInvalid(true); return meta_function.release(); } @@ -5034,10 +5121,10 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu if(!ok){ meta_type = translateType(arg->type(), &ok, QString("traverseFunction %1.%2 arg#%3").arg(class_name).arg(function_name).arg(i)); if(meta_type){ - if(meta_type->typeEntry()->isQString() && m_current_class && m_current_class->typeEntry()==qstringType){ - meta_type->setTypeEntry(qstringType); - }else if(meta_type->typeEntry()->isChar() && m_current_class && m_current_class->typeEntry()==qcharType){ - meta_type->setTypeEntry(qcharType); + if(meta_type->typeEntry()->isQString() && m_current_class && m_current_class->typeEntry()==TypeDatabase::instance()->qstringType()){ + meta_type->setTypeEntry(TypeDatabase::instance()->qstringType()); + }else if(meta_type->typeEntry()->isChar() && m_current_class && m_current_class->typeEntry()==TypeDatabase::instance()->qcharType()){ + meta_type->setTypeEntry(TypeDatabase::instance()->qcharType()); } } if (meta_type && ok && meta_type->typeEntry()->isEnum() && !meta_type->typeEntry()->qualifiedCppName().contains("::")) { @@ -5051,15 +5138,25 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu } } if (!meta_type || !ok) { - ReportHandler::warning(QString("skipping function '%1::%2', " - "unmatched parameter type '%3'") - .arg(class_name) - .arg(function_item->name()) - .arg(arg->type().toString())); if(arg->type().isVolatile()) meta_type = translateType(arg->type(), &ok, QString("traverseFunction %1.%2 arg#%3").arg(class_name).arg(function_name).arg(i)); - m_rejected_functions[{class_name + "::" + _function_name, function_item->fileName()}] = - UnmatchedArgumentType; + if(function_item->functionType() == CodeModel::Signal + || function_item->functionType() == CodeModel::PrivateSignal){ + ReportHandler::warning(QString("skipping signal '%1::%2', " + "unmatched parameter type '%3'") + .arg(class_name, function_item->name(), arg->type().toString())); + m_rejected_signals[{class_name + "::" + _function_name, function_item->fileName()}] = UnmatchedArgumentType; + }else if(!function_item->templateParameters().isEmpty()){ + ReportHandler::warning(QString("skipping function '%1::%2<%3>', " + "unmatched parameter type '%4'") + .arg(class_name, function_item->name(), tparams.join(", "), arg->type().toString())); + m_rejected_template_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, UnmatchedArgumentType); + }else{ + ReportHandler::warning(QString("skipping function '%1::%2', " + "unmatched parameter type '%3'") + .arg(class_name, function_item->name(), arg->type().toString())); + m_rejected_functions[{class_name + "::" + _function_name, function_item->fileName()}] = UnmatchedArgumentType; + } meta_function->setInvalid(true); return meta_function.release(); } @@ -5187,8 +5284,14 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(FunctionModelItem fu if(!renamedOperator.skip){ ReportHandler::warning(QString("Operator type unknown: %1::%2").arg(m_current_class->qualifiedCppName()).arg(meta_function->originalSignature())); } - m_rejected_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, - GenerationDisabled); + if(function_item->functionType() == CodeModel::Signal + || function_item->functionType() == CodeModel::PrivateSignal){ + m_rejected_signals.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + }else if(!function_item->templateParameters().isEmpty()){ + m_rejected_template_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + }else{ + m_rejected_functions.insert({class_name + "::" + _function_name, function_item->fileName()}, GenerationDisabled); + } return nullptr; } }else{ @@ -7319,6 +7422,9 @@ static void write_reject_log_file(QFile *f, case AbstractMetaBuilder::IsPrivate: headline = "Is private"; break; + case AbstractMetaBuilder::IsGlobal: + headline = "Is in global scope"; + break; case AbstractMetaBuilder::GenerationDisabled: headline = "Generation disabled by type system"; break; @@ -7391,6 +7497,22 @@ void AbstractMetaBuilder::dumpLog() { write_reject_log_file(&file, m_rejected_functions); } + { + QString fileName("mjb_rejected_template_functions.log"); + QFile file(fileName); + if (!outputDirectory().isNull()) + file.setFileName(QDir(outputDirectory()).absoluteFilePath(fileName)); + write_reject_log_file(&file, m_rejected_template_functions); + } + + { + QString fileName("mjb_rejected_signals.log"); + QFile file(fileName); + if (!outputDirectory().isNull()) + file.setFileName(QDir(outputDirectory()).absoluteFilePath(fileName)); + write_reject_log_file(&file, m_rejected_signals); + } + { QString fileName("mjb_rejected_fields.log"); QFile file(fileName); diff --git a/generator/abstractmetabuilder.h b/generator/abstractmetabuilder.h index 99d52237..f59efd91 100644 --- a/generator/abstractmetabuilder.h +++ b/generator/abstractmetabuilder.h @@ -58,6 +58,7 @@ class AbstractMetaBuilder { UnmatchedArgumentType, UnmatchedReturnType, IsPrivate, + IsGlobal, NoReason }; @@ -193,6 +194,8 @@ class AbstractMetaBuilder { QMap, RejectReason> m_rejected_functionals; QMap, RejectReason> m_rejected_enums; QMap, RejectReason> m_rejected_functions; + QMap, RejectReason> m_rejected_template_functions; + QMap, RejectReason> m_rejected_signals; QMap, RejectReason> m_rejected_fields; QList m_enums; diff --git a/generator/javagenerator.cpp b/generator/javagenerator.cpp index 5334984f..d8348bc3 100644 --- a/generator/javagenerator.cpp +++ b/generator/javagenerator.cpp @@ -305,8 +305,20 @@ void JavaGenerator::registerPackage(QString pkgName, bool inclExported){ if(idx>0){ pkgName = pkgName.mid(0, idx); } - if(pkgName=="io.qt.qml.QQmlListProperty") + if(pkgName==QStringLiteral("io.qt.qml.QQmlListProperty")) inclExported = false; + if(pkgName.startsWith(QStringLiteral("?"))){ + pkgName = pkgName.mid(1).trimmed(); + if(pkgName.startsWith(QStringLiteral("extends "))){ + pkgName = pkgName.mid(8); + }else if(pkgName.startsWith(QStringLiteral("super "))){ + pkgName = pkgName.mid(6); + } + for(const QString& pkg : pkgName.split("&")){ + registerPackage(pkg.trimmed(), inclExported); + } + return; + } idx = pkgName.lastIndexOf('.'); if(idx>0){ pkgName = pkgName.mid(0, idx); @@ -5295,6 +5307,7 @@ void JavaGenerator::write(QTextStream &s, const AbstractMetaClass *java_class, i s << INDENT; + bool force_abstract = (java_class->typeEntry()->typeFlags() & ComplexTypeEntry::ForceAbstract) != 0; bool isInterface = false; if (java_class->isInterface()) { s << "public interface "; @@ -5317,8 +5330,6 @@ void JavaGenerator::write(QTextStream &s, const AbstractMetaClass *java_class, i isAbstract = java_class->typeEntry()->targetType().contains("abstract"); } - bool force_abstract = (java_class->typeEntry()->typeFlags() & ComplexTypeEntry::ForceAbstract) != 0; - if ((java_class->isFinal() || java_class->isNamespace()) && !java_class->hasSubClasses() && !isInterface @@ -5601,7 +5612,7 @@ void JavaGenerator::write(QTextStream &s, const AbstractMetaClass *java_class, i } } - if (!java_class->isInterface() && java_class->isAbstract()) { + if (!java_class->isInterface() && (java_class->isAbstract() || force_abstract)) { s << INDENT << "@io.qt.NativeAccess" << Qt::endl << INDENT << "private static final class ConcreteWrapper extends " << java_class->name().replace('$', '.') << " {" << Qt::endl; diff --git a/generator/targets/qtjambi_masterinclude.h b/generator/targets/qtjambi_masterinclude.h index 1e522b24..6c7c8853 100644 --- a/generator/targets/qtjambi_masterinclude.h +++ b/generator/targets/qtjambi_masterinclude.h @@ -176,6 +176,7 @@ #ifndef QTJAMBI_NO_QUICK # if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) # include +# define Q_QUICK_PRIVATE_EXPORT # else # define QSGTEXTURE_PLATFORM_H # include @@ -188,6 +189,7 @@ # include # endif # endif +# include # include #endif diff --git a/generator/typesystem/java/typesystem_core-java.java b/generator/typesystem/java/typesystem_core-java.java index 5d754258..f3d6365b 100644 --- a/generator/typesystem/java/typesystem_core-java.java +++ b/generator/typesystem/java/typesystem_core-java.java @@ -5940,10 +5940,10 @@ public static QMetaObject.Connection connect(QObject sender, String signal, QObj if(slot.isEmpty()) throw new IllegalArgumentException("Empty string not allowed as slot."); QMetaMethod signalMethod = sender.metaObject().method(signal); - if(signalMethod==null) + if(signalMethod==null || !signalMethod.isValid()) throw new QNoSuchSignalException(signal); QMetaMethod slotMethod = receiver.metaObject().method(slot); - if(slotMethod==null) + if(slotMethod==null || !slotMethod.isValid()) throw new QNoSuchSlotException(receiver, slot); return connect( sender, @@ -10215,7 +10215,15 @@ public void close(){ }// class class QDebug___ extends QDebug { - + + /** + * {@inheritDoc} + */ + @Override + public QDebug append(CharSequence csq, int start, int end) { + return append(csq==null ? "null" : csq.subSequence(start, end)); + } + /** *

See Qt::endl

*/ @@ -10568,6 +10576,14 @@ public final CharSequence string() { } return null; } + + /** + * {@inheritDoc} + */ + @Override + public QTextStream append(CharSequence csq, int start, int end) { + return append(csq==null ? "null" : csq.subSequence(start, end)); + } /** *

See QTextStream::device()const

@@ -10700,6 +10716,11 @@ public boolean seek(long pos) { public final QTextStream append(java.lang.String s){ return writeString(s); } + + @io.qt.QtUninvokable + public final QTextStream append(java.lang.CharSequence s){ + return writeString(s); + } @io.qt.QtUninvokable public final QTextStream append(double v){ @@ -13421,7 +13442,8 @@ public final java.lang.reflect.Constructor toReflectedConstructor() { public final QMetaObject.AbstractSignal toSignal(QObject sender) { if(isValid()) { if(methodType()==MethodType.Signal) { - return QMetaObject.findSignal(sender, name().toString(), parameterClassTypes().toArray(new Class[parameterCount()])); + QtJambi_LibraryUtilities.internal.checkedNativeId(java.util.Objects.requireNonNull(sender)); + return io.qt.internal.QtJambiInternal.findSignal(sender, this); }else { throw new IllegalArgumentException("Method " + this + " is not a signal."); } @@ -13435,7 +13457,7 @@ public static QMetaMethod fromSignal(QMetaObject.Signal signal) { io.qt.QtSignalEmitterInterface containingObject = signal.containingObject(); if(containingObject instanceof QObject) { if(signal.methodIndex()>=0) { - method = ((QObject)containingObject).metaObject().methodByIndex(signal.methodIndex()); + method = ((QObject)containingObject).metaObject().method(signal.methodIndex()); }else{ java.util.List> signalTypeClasses = signal.argumentTypes(); method = ((QObject)containingObject).metaObject().method(signal.name(), signalTypeClasses.toArray(new Class[signalTypeClasses.size()])); @@ -15341,7 +15363,7 @@ public final QString subSequence(int start, int end) { @Override @io.qt.QtUninvokable public final QString append(CharSequence csq, int start, int end) throws java.io.IOException { - return append(csq.subSequence(start, end)); + return append(csq==null ? "null" : csq.subSequence(start, end)); } /** diff --git a/generator/typesystem/java/typesystem_httpserver-java.java b/generator/typesystem/java/typesystem_httpserver-java.java index 3e62cb12..e5ddb9ce 100644 --- a/generator/typesystem/java/typesystem_httpserver-java.java +++ b/generator/typesystem/java/typesystem_httpserver-java.java @@ -228,13 +228,6 @@ public boolean route(String pathPattern, io.qt.httpserver.QHttpServerRequest.Met return false; return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); } - - @io.qt.QtUninvokable - public boolean route(String pathPattern, String methods, GenericViewHandler viewHandler, io.qt.core.QMetaType... metaTypes) { - if(pathPattern==null || viewHandler==null || metaTypes==null) - return false; - return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); - } @io.qt.QtUninvokable public boolean route(java.util.function.Function ruleFactory, java.util.function.BiFunction viewHandler, io.qt.core.QMetaType... metaTypes) { @@ -256,13 +249,6 @@ public boolean route(String pathPattern, io.qt.httpserver.QHttpServerRequest return false; return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); } - - @io.qt.QtUninvokable - public boolean route(String pathPattern, String methods, java.util.function.BiFunction viewHandler, io.qt.core.QMetaType... metaTypes) { - if(pathPattern==null || viewHandler==null || metaTypes==null) - return false; - return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); - } @io.qt.QtUninvokable public boolean route(java.util.function.Function ruleFactory, java.util.function.BiConsumer viewHandler, io.qt.core.QMetaType... metaTypes) { @@ -284,13 +270,6 @@ public boolean route(String pathPattern, io.qt.httpserver.QHttpServerRequest.Met return false; return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); } - - @io.qt.QtUninvokable - public boolean route(String pathPattern, String methods, java.util.function.BiConsumer viewHandler, io.qt.core.QMetaType... metaTypes) { - if(pathPattern==null || viewHandler==null || metaTypes==null) - return false; - return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); - } @io.qt.QtUninvokable public boolean route(java.util.function.Function ruleFactory, java.util.function.Function viewHandler, io.qt.core.QMetaType... metaTypes) { @@ -313,13 +292,6 @@ public boolean route(String pathPattern, io.qt.httpserver.QHttpServerRequest return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); } - @io.qt.QtUninvokable - public boolean route(String pathPattern, String methods, java.util.function.Function viewHandler, io.qt.core.QMetaType... metaTypes) { - if(pathPattern==null || viewHandler==null || metaTypes==null) - return false; - return router().addRule(new QHttpServerRouterRule(pathPattern, methods, createRouterHandler(viewHandler, metaTypes)), metaTypes); - } - @FunctionalInterface private interface SlotInvoker{ Object invoke(ViewHandler object, Object... args) throws Throwable; @@ -627,87 +599,16 @@ public boolean route(S } } } - - @io.qt.QtUninvokable - public boolean route(String pathPattern, String methods, ViewHandler viewHandler) { - InvokableTypeInfo info = type(viewHandler); - if(info.slotInvoker==null) - return false; - java.lang.reflect.Parameter[] parameters = info.parameters; - int requestArg = -1; - int responderArg = -1; - for (int i = 0; i < parameters.length; i++) { - if(parameters[i].getType()==QHttpServerRequest.class) { - requestArg = i; - }else if(parameters[i].getType()==QHttpServerResponder.class) { - responderArg = i; - } - } - if(!info.hasReturnType) { // no responder! - if(responderArg==-1) { - throw new RuntimeException("QHttpServerResponder expected as argument."); - }else { - if(requestArg==-1) { - if(responderArg!=parameters.length-1) { - throw new RuntimeException("QHttpServerResponder expected to be last argument."); - } - }else { - if(responderArg0) { - throw new RuntimeException("QHttpServerResponder unexpected for suppliers."); - } - if(requestArg>0 && requestArg!=parameters.length-1) { - throw new RuntimeException("QHttpServerRequest expected to be last argument."); - } - io.qt.core.QMetaType[] metaTypes = new io.qt.core.QMetaType[parameters.length - (requestArg==-1 ? 0 : 1)]; - for(int i=0; i converters = new java.util.TreeMap<>(); - @io.qt.QtUninvokable public final void addConverter(Class type, java.lang.String regexp){ io.qt.core.QMetaType metaType = io.qt.core.QMetaType.fromType(type); addConverter(metaType, regexp); } - @io.qt.QtUninvokable - public final void addConverter(io.qt.core.QMetaType metaType, java.lang.String regexp){ - io.qt.core.QByteArray pointer = io.qt.core.QString.toLatin1(regexp); - converters.put(metaType.id(), pointer); - addConverter(metaType, pointer); - } - @io.qt.QtUninvokable public final void removeConverter(Class type){ io.qt.core.QMetaType metaType = io.qt.core.QMetaType.fromType(type); diff --git a/generator/typesystem/java/typesystem_qml-java.java b/generator/typesystem/java/typesystem_qml-java.java index 9b443119..7a6dc0da 100644 --- a/generator/typesystem/java/typesystem_qml-java.java +++ b/generator/typesystem/java/typesystem_qml-java.java @@ -119,6 +119,20 @@ public final void setProperty(int arrayIndex, QJSValue.SpecialValue value) { class __QtQml__ extends QtQml{ + /** + * Returns the QJSEngine associated with object, if any. + * + * This function is useful if you have exposed a QObject to the JavaScript environment + * and later in your program would like to regain access. It does not require you to + * keep the wrapper around that was returned from QJSEngine::newQObject(). + */ + @io.qt.QtUninvokable + public static QJSEngine qjsEngine(io.qt.core.QObject object){ + return qjsEngine(QtJambi_LibraryUtilities.internal.nativeId(object)); + } + + private static native QJSEngine qjsEngine(long object); + public static native int qmlRegisterTypeNotAvailable(String uri, int versionMajor, int versionMinor, String qmlName, String message); public static native int qmlRegisterUncreatableType(Class type, String uri, int versionMajor, int versionMinor, String qmlName, String reason); @@ -142,6 +156,8 @@ public static QObject qmlAttachedPropertiesObject(Class clazz public static native int qmlRegisterAnonymousType(Class type, String uri, int versionMajor); public static native int qmlRegisterType(QUrl url, String uri, int versionMajor, int versionMinor, String qmlName); + + public static native int qmlTypeId(String uri, int versionMajor, int versionMinor, String qmlName); public static native boolean qmlProtectModule(String uri, int majVersion); @@ -244,6 +260,98 @@ private final boolean connectNotifySignal(io.qt.core.QMetaObject.AbstractSlot sl }// class +class QJSEngine__{ + + @io.qt.QtUninvokable + public final QJSValue newQMetaObject(Class type) { + return newQMetaObject(io.qt.core.QMetaObject.forType(type)); + } +}// class + +class QJSEngine_6_{ + @io.qt.QtUninvokable + public final T fromScriptValue(QJSValue value, Class type, io.qt.core.QMetaType...instantiations) { + return fromScriptValue(value, io.qt.core.QMetaType.fromType(type, instantiations)); + } + + @io.qt.QtUninvokable + public final T fromScriptValue(QJSValue value, io.qt.core.QMetaType type) { + return fromScriptValue(QtJambi_LibraryUtilities.internal.nativeId(this), QtJambi_LibraryUtilities.internal.checkedNativeId(value), QtJambi_LibraryUtilities.internal.checkedNativeId(type)); + } + + private static native T fromScriptValue(long thisId, long valueId, long typeId); + + @io.qt.QtUninvokable + public final QJSValue toScriptValue(T value) { + return toScriptValue(QtJambi_LibraryUtilities.internal.nativeId(this), value); + } + + private static native QJSValue toScriptValue(long thisId, Object value); +}// class + +class QJSEngine_61_{ + @io.qt.QtUninvokable + public final T fromManagedValue(QJSManagedValue value, Class type, io.qt.core.QMetaType...instantiations) { + return fromManagedValue(value, io.qt.core.QMetaType.fromType(type, instantiations)); + } + + @io.qt.QtUninvokable + public final T fromManagedValue(QJSManagedValue value, io.qt.core.QMetaType type) { + return fromManagedValue(QtJambi_LibraryUtilities.internal.nativeId(this), QtJambi_LibraryUtilities.internal.checkedNativeId(value), QtJambi_LibraryUtilities.internal.checkedNativeId(type)); + } + + private static native T fromManagedValue(long thisId, long valueId, long typeId); + + @io.qt.QtUninvokable + public final QJSManagedValue toManagedValue(T value) { + return toManagedValue(QtJambi_LibraryUtilities.internal.nativeId(this), value); + } + + private static native QJSManagedValue toManagedValue(long thisId, Object value); + +}// class + +class QJSEngine_63_{ + @io.qt.QtUninvokable + public final T fromVariant(Object variant, Class type, io.qt.core.QMetaType...instantiations) { + return fromVariant(variant, io.qt.core.QMetaType.fromType(type, instantiations)); + } + + @io.qt.QtUninvokable + public final T fromVariant(Object variant, io.qt.core.QMetaType type) { + return fromVariant(QtJambi_LibraryUtilities.internal.nativeId(this), variant, QtJambi_LibraryUtilities.internal.checkedNativeId(type)); + } + + private static native T fromVariant(long thisId, Object variant, long typeId); + +}// class + +class QQmlEngine__{ + + /** + *

See QQmlEngine::singletonInstance(int qmlTypeId)

+ */ + @io.qt.QtUninvokable + public final T singletonInstance(Class type, int qmlTypeId) { + io.qt.core.QObject object = singletonInstance(QtJambi_LibraryUtilities.internal.nativeId(this), qmlTypeId).toQObject(); + if(object!=null) + return object.qt_metacast(type); + return null; + } + + /** + *

See QQmlEngine::singletonInstance(int qmlTypeId)

+ */ + @io.qt.QtUninvokable + public final QJSValue singletonInstance(int qmlTypeId) { + return singletonInstance(QtJambi_LibraryUtilities.internal.nativeId(this), qmlTypeId); + } + + @io.qt.QtUninvokable + private static native QJSValue singletonInstance(long __this__nativeId, int qmlTypeId); + +}// class + class QQmlExpression__{ public static class ValueIsUndefined extends RuntimeException{ private static final long serialVersionUID = 7719401165632826435L; diff --git a/generator/typesystem/java/typesystem_webenginequick-java.java b/generator/typesystem/java/typesystem_webenginequick-java.java new file mode 100644 index 00000000..1c3a94bb --- /dev/null +++ b/generator/typesystem/java/typesystem_webenginequick-java.java @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2009-2022 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved. +** +** This file is part of Qt Jambi. +** +** ** $BEGIN_LICENSE$ +** +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** $END_LICENSE$ +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ + +class QtWebEngineQuick___{ + /** + * Allows accessing the QWebEngineSettings inside of a QQuickWebEngineSettings (internal type). + * @param quickWebEngineSettings QQuickWebEngineSettings object + * @return QWebEngineSettings + */ + @SuppressWarnings("exports") + public static native io.qt.webengine.core.QWebEngineSettings toWebEngineSettings(io.qt.core.QObject quickWebEngineSettings); + + /** + * Allows accessing the QWebEngineScriptCollection inside of a QQuickWebEngineScriptCollection (internal type). + * @param quickWebEngineScriptCollection QQuickWebEngineScriptCollection object + * @return QWebEngineScriptCollection + */ + @SuppressWarnings("exports") + public static native io.qt.webengine.core.QWebEngineScriptCollection toWebEngineScriptCollection(io.qt.core.QObject quickWebEngineScriptCollection); +}// class + + diff --git a/generator/typesystem/typedatabase.cpp b/generator/typesystem/typedatabase.cpp index aa71ed6a..eb029057 100644 --- a/generator/typesystem/typedatabase.cpp +++ b/generator/typesystem/typedatabase.cpp @@ -85,7 +85,9 @@ TypeDatabase::TypeDatabase() : m_suppressWarnings(true), m_includeEclipseWarnings(false), m_pixmapType(nullptr), - m_bitmapType(nullptr) { + m_bitmapType(nullptr), + m_qstringType(nullptr), + m_qcharType(nullptr){ } TypeDatabase *TypeDatabase::instance() { @@ -208,8 +210,10 @@ NamespaceTypeEntry *TypeDatabase::findNamespaceType(const QString &name) { void TypeDatabase::addType(TypeEntry *e) { if(e->qualifiedCppName()=="QString" && !e->isQString()){ m_entries["QtJambiString"].append(e); + m_qstringType = dynamic_cast(e); }else if(e->qualifiedCppName()=="QChar" && !e->isChar()){ m_entries["QtJambiChar"].append(e); + m_qcharType = dynamic_cast(e); }else{ m_entries[e->qualifiedCppName()].append(e); } @@ -222,10 +226,10 @@ void TypeDatabase::addType(TypeEntry *e) { } } if(!m_pixmapType && e->qualifiedCppName()==QLatin1String("QPixmap")){ - m_pixmapType = e; + m_pixmapType = dynamic_cast(e); } if(!m_bitmapType && e->qualifiedCppName()==QLatin1String("QBitmap")){ - m_bitmapType = e; + m_bitmapType = dynamic_cast(e); } } diff --git a/generator/typesystem/typedatabase.h b/generator/typesystem/typedatabase.h index 938ca013..9a969e67 100644 --- a/generator/typesystem/typedatabase.h +++ b/generator/typesystem/typedatabase.h @@ -156,6 +156,14 @@ class TypeDatabase { inline uint qtVersion() const {return m_qtVersion;} + ComplexTypeEntry * qstringType() const{ + return m_qstringType; + } + + ComplexTypeEntry * qcharType() const{ + return m_qcharType; + } + private: uint m_qtVersion; uint m_suppressWarnings : @@ -178,8 +186,10 @@ class TypeDatabase { DefinedPtr m_defined; QMap m_typeSystemsByQtLibrary; - const TypeEntry * m_pixmapType; - const TypeEntry * m_bitmapType; + ComplexTypeEntry * m_pixmapType; + ComplexTypeEntry * m_bitmapType; + ComplexTypeEntry * m_qstringType; + ComplexTypeEntry * m_qcharType; }; #endif diff --git a/generator/typesystem/typeentry.cpp b/generator/typesystem/typeentry.cpp index 6e7eb00f..df4b9ffd 100644 --- a/generator/typesystem/typeentry.cpp +++ b/generator/typesystem/typeentry.cpp @@ -203,10 +203,10 @@ QString EnumTypeEntry::javaPackage() const { }else{ m_qualifier_type = TypeDatabase::instance()->findType(m_javaScope); } - if(m_qualifier_type && m_qualifier_type->isQString()) - m_qualifier_type = TypeDatabase::instance()->findType("QtJambiString"); - else if(m_qualifier_type && m_qualifier_type->isChar()) - m_qualifier_type = TypeDatabase::instance()->findType("QtJambiChar"); + if(m_qualifier_type && m_qualifier_type->isQString() && TypeDatabase::instance()->qstringType()) + m_qualifier_type = TypeDatabase::instance()->qstringType(); + else if(m_qualifier_type && m_qualifier_type->isChar() && TypeDatabase::instance()->qcharType()) + m_qualifier_type = TypeDatabase::instance()->qcharType(); } if (m_qualifier_type){ if(m_qualifier_type->isVariant()) diff --git a/generator/typesystem/xml/typesystem_core-common.xml b/generator/typesystem/xml/typesystem_core-common.xml index cc861fc1..5f39f511 100644 --- a/generator/typesystem/xml/typesystem_core-common.xml +++ b/generator/typesystem/xml/typesystem_core-common.xml @@ -50,8 +50,6 @@ <li>QtGui - Base classes for graphical user interface (GUI) components. Includes OpenGL.</li> <li>QtWidgets - Classes to extend Qt GUI with C++ widgets.</li> </ul> - - @@ -289,6 +287,7 @@ + @@ -2730,11 +2729,9 @@ - - @@ -2966,7 +2963,8 @@ - + + @@ -3438,7 +3436,6 @@ - @@ -3725,8 +3722,10 @@ + + diff --git a/generator/typesystem/xml/typesystem_core-java.xml b/generator/typesystem/xml/typesystem_core-java.xml index f02f55d4..15cda810 100644 --- a/generator/typesystem/xml/typesystem_core-java.xml +++ b/generator/typesystem/xml/typesystem_core-java.xml @@ -3116,7 +3116,7 @@ if(!useQGuiApplicationExec){ - + @@ -3219,11 +3219,27 @@ if(!useQGuiApplicationExec){ + + + + + Q_UNUSED(__qt_return_value) + %out = qtjambi_to_stringobject(%env, __qt_%1); + + + + + + QString %out; + + + + - Q_UNUSED(__qt_return_value) + Q_UNUSED(__qt_return_value) %out = qtjambi_from_qstring(%env, __qt_%1); @@ -3233,10 +3249,23 @@ if(!useQGuiApplicationExec){ QString %out; + + + + + + + + + + + QString %out = qtjambi_to_qstring(%env, %1); + + @@ -4057,7 +4086,20 @@ if(!useQGuiApplicationExec){ - + + + qsizetype* %out; + if constexpr(sizeof(int)==sizeof(qsizetype)){ + %out = qtjambi_array_cast<qsizetype*>(%env, %scope, %in, 1); + }else{ + if(int* tmp = qtjambi_array_cast<int*>(%env, %scope, %in, 1)){ + %out = new qsizetype(*tmp); + %scope.addFinalAction([=]{*tmp = jint(*%out); delete %out;}); + }else{ + %out = nullptr; + } + } + @@ -4949,7 +4991,7 @@ if(!useQGuiApplicationExec){ - + @@ -5003,6 +5045,17 @@ if(!useQGuiApplicationExec){ + + + + + + + + + QString %out = qtjambi_to_qstring(%env, %1); + + @@ -5087,11 +5140,6 @@ if(!useQGuiApplicationExec){ - - - - - diff --git a/generator/typesystem/xml/typesystem_gui-common.xml b/generator/typesystem/xml/typesystem_gui-common.xml index 55daa67e..ba241606 100644 --- a/generator/typesystem/xml/typesystem_gui-common.xml +++ b/generator/typesystem/xml/typesystem_gui-common.xml @@ -270,6 +270,7 @@ + diff --git a/generator/typesystem/xml/typesystem_gui-java.xml b/generator/typesystem/xml/typesystem_gui-java.xml index c64f53fc..858dd6bc 100644 --- a/generator/typesystem/xml/typesystem_gui-java.xml +++ b/generator/typesystem/xml/typesystem_gui-java.xml @@ -5150,7 +5150,7 @@ __rcRedirections.remove(%1); - jobject %out = %env->NewDirectByteBuffer(%in, __qt_this->size()); + %out = %env->NewDirectByteBuffer(%in, __qt_this->size()); @@ -5158,7 +5158,7 @@ __rcRedirections.remove(%1); - jobject %out = %env->NewDirectByteBuffer(%in, qMin(%2, __qt_this->size()-%1)); + %out = %env->NewDirectByteBuffer(%in, qMin(%2, __qt_this->size()-%1)); @@ -5385,14 +5385,14 @@ __rcRedirections.remove(%1); - jobject %out = qtjambi_from_qobject(%env, %in, "io/qt/widgets/QAction"); + %out = qtjambi_from_qobject(%env, %in, "io/qt/widgets/QAction"); - jobject %out = qtjambi_from_qobject(%env, %in, "io/qt/widgets/QAction"); + %out = qtjambi_from_qobject(%env, %in, "io/qt/widgets/QAction"); diff --git a/generator/typesystem/xml/typesystem_httpserver-common.xml b/generator/typesystem/xml/typesystem_httpserver-common.xml index 00777292..1635ac89 100644 --- a/generator/typesystem/xml/typesystem_httpserver-common.xml +++ b/generator/typesystem/xml/typesystem_httpserver-common.xml @@ -46,6 +46,7 @@ + @@ -59,17 +60,6 @@ - - - - - - - - - - - @@ -84,11 +74,13 @@ + - + - + diff --git a/generator/typesystem/xml/typesystem_httpserver-java.xml b/generator/typesystem/xml/typesystem_httpserver-java.xml index 2ea7d22f..4a11926a 100644 --- a/generator/typesystem/xml/typesystem_httpserver-java.xml +++ b/generator/typesystem/xml/typesystem_httpserver-java.xml @@ -43,64 +43,6 @@ ** ****************************************************************************--> - - -template<> inline QHttpServerResponse qvariant_cast<QHttpServerResponse>(const QVariant &v) -{ - QMetaType targetType = QMetaType::fromType<QHttpServerResponse>(); - if (v.d.type() == targetType) - return QHttpServerResponse(const_cast<QHttpServerResponse&&>(v.d.get<QHttpServerResponse>())); - QHttpServerResponse t(QHttpServerResponse::StatusCode::NotFound); - QMetaType::convert(v.metaType(), v.constData(), targetType, &t); - return t; -} - -namespace QtJambiPrivate{ -template<> -struct FutureVariantHandler<QHttpServerResponse>{ - static QVariant create(JNIEnv *env, const QHttpServerResponse& value){ - jobject _value = qtjambi_cast<jobject>(env, new QHttpServerResponse(std::move(const_cast<QHttpServerResponse&>(value)))); - qtjambi_set_java_ownership(env, _value); - return QVariant::fromValue<JObjectWrapper>(JObjectWrapper(env, _value)); - } - static void reportNativeResults(JNIEnv *env, const QSharedPointer<QFutureInterfaceBase>& sourceFuture, const QSharedPointer<QFutureInterfaceBase>& targetFuture, int beginIndex, int count){ - if(count==1){ - dynamic_cast<QFutureInterface<QVariant>*>(sourceFuture.get())->reportResult(create(env, targetFuture->resultStoreBase().resultAt(beginIndex).value<QHttpServerResponse>()), beginIndex); - }else{ - QVector<QVariant> results(count); - for(int i=0; i<count; ++i){ - results << create(env, targetFuture->resultStoreBase().resultAt(beginIndex).value<QHttpServerResponse>()); - } - dynamic_cast<QFutureInterface<QVariant>*>(sourceFuture.get())->reportResults(results, count); - } - } - - static void reportJavaResults(JNIEnv *, const QSharedPointer<QFutureInterfaceBase>& sourceFuture, const QSharedPointer<QFutureInterfaceBase>&targetFuture, int beginIndex, int count){ - if(count==1){ - dynamic_cast<QFutureInterface<QHttpServerResponse>*>(targetFuture.get())->reportResult(sourceFuture->resultStoreBase().resultAt(beginIndex).value<QVariant>().value<QHttpServerResponse>(), beginIndex); - }else{ - for(int i=0; i<count; ++i){ - dynamic_cast<QFutureInterface<QHttpServerResponse>*>(targetFuture.get())->reportResult(sourceFuture->resultStoreBase().resultAt(i).value<QVariant>().value<QHttpServerResponse>(), i); - } - } - } -}; -} - - - - - - - - - - - QFuture<QHttpServerResponse> %out = qtjambi_cast<QFuture<QHttpServerResponse>>(%env, %in); - - - - @@ -118,6 +60,26 @@ struct FutureVariantHandler<QHttpServerResponse>{ + + + + + + + + + + + + + + + + + + + + @@ -137,37 +99,6 @@ struct FutureVariantHandler<QHttpServerResponse>{ - - - - - QHash<QMetaType,QString> converters; - for(std::pair<QMetaType,QLatin1StringView> m : %in.asKeyValueRange()){ - converters[m.first] = m.second; - } - %out = qtjambi_cast<jobject>(%env, converters); - - - - - - - - QByteArray* data = qtjambi_cast<QByteArray*>(%env, %in); - QLatin1StringView %out = QLatin1StringView(data->data()); - - - - - - converters.remove(metaType.id()); - - - - - converters.clear(); - - @@ -219,11 +150,6 @@ struct FutureVariantHandler<QHttpServerResponse>{ - - - - - diff --git a/generator/typesystem/xml/typesystem_qml-common.xml b/generator/typesystem/xml/typesystem_qml-common.xml index 829c752c..1fab8370 100644 --- a/generator/typesystem/xml/typesystem_qml-common.xml +++ b/generator/typesystem/xml/typesystem_qml-common.xml @@ -48,13 +48,11 @@ - - @@ -228,6 +226,7 @@ + diff --git a/generator/typesystem/xml/typesystem_qml-java.xml b/generator/typesystem/xml/typesystem_qml-java.xml index 54883cba..4ff4ac98 100644 --- a/generator/typesystem/xml/typesystem_qml-java.xml +++ b/generator/typesystem/xml/typesystem_qml-java.xml @@ -205,6 +205,17 @@ + + + + + + + + + + + diff --git a/generator/typesystem/xml/typesystem_quick-common.xml b/generator/typesystem/xml/typesystem_quick-common.xml index 86930a58..8a5bd20a 100644 --- a/generator/typesystem/xml/typesystem_quick-common.xml +++ b/generator/typesystem/xml/typesystem_quick-common.xml @@ -77,6 +77,9 @@ + + + @@ -142,6 +145,8 @@ + + @@ -747,12 +752,5 @@ - - - - - - - diff --git a/generator/typesystem/xml/typesystem_quick-java.xml b/generator/typesystem/xml/typesystem_quick-java.xml index 6b1846f2..6867014d 100644 --- a/generator/typesystem/xml/typesystem_quick-java.xml +++ b/generator/typesystem/xml/typesystem_quick-java.xml @@ -651,6 +651,9 @@ + + + diff --git a/generator/typesystem/xml/typesystem_test-java.xml b/generator/typesystem/xml/typesystem_test-java.xml index f1a91265..bcafeb94 100644 --- a/generator/typesystem/xml/typesystem_test-java.xml +++ b/generator/typesystem/xml/typesystem_test-java.xml @@ -376,6 +376,12 @@ %out = qtjambi_cast<jobject>(%env, variant_%in); +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(%2).iface()->copyCtr + || (!%in && !QMetaType(%2).iface()->defaultCtr)){ + JavaException::raiseUnsupportedOperationException(%env, qPrintable(QString("Unable to create result of type %1.").arg(QLatin1String(QMetaType::typeName(%2)))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant_%in(QMetaType(%2), %in); %out = qtjambi_cast<jobject>(%env, variant_%in); @@ -392,6 +398,12 @@ %out = qtjambi_cast<jobject>(%env, variant_%in); +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(%2).iface()->copyCtr + || (!%in && !QMetaType(%2).iface()->defaultCtr)){ + JavaException::raiseUnsupportedOperationException(%env, qPrintable(QString("Unable to create result of type %1.").arg(QLatin1String(QMetaType::typeName(%2)))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant_%in(QMetaType(%2), %in); %out = qtjambi_cast<jobject>(%env, variant_%in); @@ -408,6 +420,12 @@ %out = qtjambi_cast<jobject>(%env, variant_%in); +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(%2).iface()->copyCtr + || (!%in && !QMetaType(%2).iface()->defaultCtr)){ + JavaException::raiseUnsupportedOperationException(%env, qPrintable(QString("Unable to create result of type %1.").arg(QLatin1String(QMetaType::typeName(%2)))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant_%in(QMetaType(%2), %in); %out = qtjambi_cast<jobject>(%env, variant_%in); diff --git a/generator/typesystem/xml/typesystem_webengine-common.xml b/generator/typesystem/xml/typesystem_webengine-common.xml index 7338ab10..82f0678d 100644 --- a/generator/typesystem/xml/typesystem_webengine-common.xml +++ b/generator/typesystem/xml/typesystem_webengine-common.xml @@ -72,6 +72,8 @@ + + diff --git a/generator/typesystem/xml/typesystem_webengine-java.xml b/generator/typesystem/xml/typesystem_webengine-java.xml index 67178b3d..71507872 100644 --- a/generator/typesystem/xml/typesystem_webengine-java.xml +++ b/generator/typesystem/xml/typesystem_webengine-java.xml @@ -43,4 +43,32 @@ ** ****************************************************************************--> + + + + + + Q_UNUSED(in) + JavaException::raiseIllegalAccessException(%env, "Calling signal downloadRequested from Java not allowed." QTJAMBI_STACKTRACEINFO ); + QQuickWebEngineDownloadItem* %out{nullptr}; + + + %out = qtjambi_cast<jobject>(%env, reinterpret_cast<QObject*>(%in)); + + + + + + + + Q_UNUSED(in) + JavaException::raiseIllegalAccessException(%env, "Calling signal downloadFinished from Java not allowed." QTJAMBI_STACKTRACEINFO ); + QQuickWebEngineDownloadItem* %out{nullptr}; + + + %out = qtjambi_cast<jobject>(%env, reinterpret_cast<QObject*>(%in)); + + + + diff --git a/generator/typesystem/xml/typesystem_webenginecore-common.xml b/generator/typesystem/xml/typesystem_webenginecore-common.xml index beaca4d3..d0975321 100644 --- a/generator/typesystem/xml/typesystem_webenginecore-common.xml +++ b/generator/typesystem/xml/typesystem_webenginecore-common.xml @@ -139,6 +139,7 @@ + diff --git a/generator/typesystem/xml/typesystem_webenginequick-common.xml b/generator/typesystem/xml/typesystem_webenginequick-common.xml index 53cb0b41..a25ca07f 100644 --- a/generator/typesystem/xml/typesystem_webenginequick-common.xml +++ b/generator/typesystem/xml/typesystem_webenginequick-common.xml @@ -66,6 +66,8 @@ + + diff --git a/generator/typesystem/xml/typesystem_webenginequick-java.xml b/generator/typesystem/xml/typesystem_webenginequick-java.xml index 78f67e53..70b15c8b 100644 --- a/generator/typesystem/xml/typesystem_webenginequick-java.xml +++ b/generator/typesystem/xml/typesystem_webenginequick-java.xml @@ -43,4 +43,40 @@ ** ****************************************************************************--> + + + + + + + + + + + + + + Q_UNUSED(in) + JavaException::raiseIllegalAccessException(%env, "Calling signal downloadRequested from Java not allowed." QTJAMBI_STACKTRACEINFO ); + QQuickWebEngineDownloadRequest* %out{nullptr}; + + + %out = qtjambi_cast<jobject>(%env, reinterpret_cast<QWebEngineDownloadRequest*>(%in)); + + + + + + + + Q_UNUSED(in) + JavaException::raiseIllegalAccessException(%env, "Calling signal downloadFinished from Java not allowed." QTJAMBI_STACKTRACEINFO ); + QQuickWebEngineDownloadRequest* %out{nullptr}; + + + %out = qtjambi_cast<jobject>(%env, reinterpret_cast<QWebEngineDownloadRequest*>(%in)); + + + + diff --git a/releases.properties b/releases.properties index 360eadff..55411040 100644 --- a/releases.properties +++ b/releases.properties @@ -1,6 +1,6 @@ -5.15=8 +5.15=9 6.0=1 6.1=1 -6.2=6 -6.3=3 +6.2=7 +6.3=4 6.4=0 \ No newline at end of file diff --git a/src/cpp/qtjambi/qnativepointer.cpp b/src/cpp/qtjambi/qnativepointer.cpp index 0150556b..25c72c31 100644 --- a/src/cpp/qtjambi/qnativepointer.cpp +++ b/src/cpp/qtjambi/qnativepointer.cpp @@ -28,11 +28,6 @@ ****************************************************************************/ #include -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif - QT_WARNING_DISABLE_DEPRECATED #include "qtjambi_core.h" diff --git a/src/cpp/qtjambi/qtjambi_containers.cpp b/src/cpp/qtjambi/qtjambi_containers.cpp index 52634999..dd418d7e 100644 --- a/src/cpp/qtjambi/qtjambi_containers.cpp +++ b/src/cpp/qtjambi/qtjambi_containers.cpp @@ -30,10 +30,6 @@ #include #include QT_WARNING_DISABLE_DEPRECATED -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif #include diff --git a/src/cpp/qtjambi/qtjambi_core.cpp b/src/cpp/qtjambi/qtjambi_core.cpp index f3d1e9a1..e54abbbe 100644 --- a/src/cpp/qtjambi/qtjambi_core.cpp +++ b/src/cpp/qtjambi/qtjambi_core.cpp @@ -37,10 +37,6 @@ #include QT_WARNING_DISABLE_DEPRECATED -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif #include @@ -489,6 +485,22 @@ jobject qtjambi_from_qvariant(JNIEnv *env, const QVariant &qt_variant) return Java::Runtime::Long::valueOf(env, qt_variant.toLongLong()); case QMetaType::Bool: return Java::Runtime::Boolean::valueOf(env, qt_variant.toBool()); + case QMetaType::QStringList: + return qtjambi_cast(env, qt_variant.value()); + case QMetaType::QByteArrayList: + return qtjambi_cast(env, qt_variant.value()); + case QMetaType::QVariantMap: + return qtjambi_cast(env, qt_variant.value()); + case QMetaType::QVariantHash: + return qtjambi_cast(env, qt_variant.value()); + case QMetaType::QVariantList: + return qtjambi_cast(env, qt_variant.value()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + case QMetaType::QVariantPair: + return qtjambi_cast(env, qt_variant.value()); +#endif + case QMetaType::QObjectStar: + return qtjambi_cast(env, qt_variant.value()); default: break; } @@ -6842,51 +6854,46 @@ bool qtjambi_thread_affine_event_notify(void **data) if(QObject *receiver = reinterpret_cast(data[0])){ QEvent *event = reinterpret_cast(data[1]); { - QThread *currentThread = QThread::currentThread(); - QThread *thr(nullptr); if(const QObjectPrivate* p = QObjectPrivate::get(receiver)){ -#if QT_VERSION < QT_VERSION_CHECK(5,15,0) - if(p->threadData) - thr = p->threadData->thread; -#else - if(QThreadData* threadData = p->threadData.loadAcquire()) - thr = threadData->thread.loadAcquire(); -#endif - } - if(thr && currentThread != thr){ - QMetaEnum enm = QMetaEnum::fromType(); - QString eventDescr; - if(enm.isValid()){ - eventDescr = QLatin1String(enm.valueToKeys(event->type())); - }else{ - eventDescr = QString::number(int(event->type())); - } - if(QCoreApplicationPrivate::is_app_closing) - return false; - if (JNIEnv *env = qtjambi_current_environment()){ - QTJAMBI_JNI_LOCAL_FRAME(env, 200) - QtJambiExceptionHandler __exceptionHandler; - try{ - if (QSharedPointer link = QtJambiLink::findLinkForQObject(receiver)) { - JavaException::raiseQThreadAffinityException(env, qPrintable(QString::asprintf("Cannot send events to objects owned by a different thread (event type: %ls). " - "Current thread 0x%p. Receiver '%ls' (of type '%s') was created in thread 0x%p", - qUtf16Printable(eventDescr), - currentThread, qUtf16Printable(receiver->objectName()), - receiver->metaObject()->className(), thr)) QTJAMBI_STACKTRACEINFO , - link->getJavaObjectLocalRef(env), - nullptr, nullptr); - }else{ - JavaException::raiseQThreadAffinityException(env, qPrintable(QString::asprintf("Cannot send events to objects owned by a different thread (event type: %ls). " - "Current thread 0x%p. Receiver '%ls' (of type '%s') was created in thread 0x%p", - qUtf16Printable(eventDescr), - currentThread, qUtf16Printable(receiver->objectName()), - receiver->metaObject()->className(), thr)) QTJAMBI_STACKTRACEINFO , - nullptr, nullptr, nullptr); + QThreadData *thr = p->threadData; + QScopedScopeLevelCounter scopeLevelCounter(thr); + QThreadData *currentThread = QThreadData::get2(QThread::currentThread()); + QScopedScopeLevelCounter cscopeLevelCounter(currentThread); + if(thr && thr->threadId!=nullptr && currentThread != thr){ + QMetaEnum enm = QMetaEnum::fromType(); + QString eventDescr; + if(enm.isValid()){ + eventDescr = QLatin1String(enm.valueToKeys(event->type())); + }else{ + eventDescr = QString::number(int(event->type())); + } + if(QCoreApplicationPrivate::is_app_closing) + return false; + if (JNIEnv *env = qtjambi_current_environment()){ + QTJAMBI_JNI_LOCAL_FRAME(env, 200) + QtJambiExceptionHandler __exceptionHandler; + try{ + if (QSharedPointer link = QtJambiLink::findLinkForQObject(receiver)) { + JavaException::raiseQThreadAffinityException(env, qPrintable(QString::asprintf("Cannot send events to objects owned by a different thread (event type: %ls). " + "Current thread 0x%p. Receiver '%ls' (of type '%s') was created in thread 0x%p", + qUtf16Printable(eventDescr), + currentThread, qUtf16Printable(receiver->objectName()), + receiver->metaObject()->className(), thr)) QTJAMBI_STACKTRACEINFO , + link->getJavaObjectLocalRef(env), + nullptr, nullptr); + }else{ + JavaException::raiseQThreadAffinityException(env, qPrintable(QString::asprintf("Cannot send events to objects owned by a different thread (event type: %ls). " + "Current thread 0x%p. Receiver '%ls' (of type '%s') was created in thread 0x%p", + qUtf16Printable(eventDescr), + currentThread, qUtf16Printable(receiver->objectName()), + receiver->metaObject()->className(), thr)) QTJAMBI_STACKTRACEINFO , + nullptr, nullptr, nullptr); + } + }catch(const JavaException& exn){ + __exceptionHandler.handle(nullptr, exn, "QCoreApplication::sendEvent"); } - }catch(const JavaException& exn){ - __exceptionHandler.handle(nullptr, exn, "QCoreApplication::sendEvent"); + return true; } - return true; } } } diff --git a/src/cpp/qtjambi/qtjambi_functions.cpp b/src/cpp/qtjambi/qtjambi_functions.cpp index 3bfec74e..c341d7ad 100644 --- a/src/cpp/qtjambi/qtjambi_functions.cpp +++ b/src/cpp/qtjambi/qtjambi_functions.cpp @@ -36,10 +36,11 @@ ****************************************************************************/ #include + #if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 +#include #endif + #include "qtjambi_functionpointer.h" QT_WARNING_DISABLE_DEPRECATED @@ -223,9 +224,11 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiSignals_signalInfo) QByteArray signalName = qtjambi_cast(env, Java::Runtime::Field::getName(env, field)).toUtf8(); const QMetaObject* containingObjectClass = object->metaObject(); QMap matchingSignals; - for(int i=0, length = containingObjectClass->methodCount(); imethodOffset(), length = containingObjectClass->methodCount(); imethod(i); - if(method.methodType()==QMetaMethod::Signal && signalName==method.name()){ + if(method.methodType()==QMetaMethod::Signal + && signalName==method.name() + && !matchingSignals.contains(method.methodSignature())){ matchingSignals[method.methodSignature()] = method; } } @@ -288,37 +291,6 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal_isObjectWrapperType) || metaTypeId == registeredMetaTypeID(typeid(JIteratorWrapper)); } -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -struct QObjectPrivate::ConnectionData -{ - // the id below is used to avoid activating new connections. When the object gets - // deleted it's set to 0, so that signal emission stops - QAtomicInteger currentConnectionId; - QAtomicInt ref; - QAtomicPointer signalVector; - Connection *senders = nullptr; - Sender *currentSender = nullptr; // object currently activating the object - QAtomicPointer orphaned; -}; - -struct QObjectPrivate::Sender -{ - Sender(QObject *receiver, QObject *sender, int signal) - : receiver(receiver), sender(sender), signal(signal) - { - if (receiver) { - ConnectionData *cd = receiver->d_func()->connections.loadRelaxed(); - previous = cd->currentSender; - cd->currentSender = this; - } - } - Sender *previous; - QObject *receiver; - QObject *sender; - int signal; -}; -#endif - extern "C" Q_DECL_EXPORT jlong JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiSignals_00024CurrentSenderSetter_setQObjectSender) (JNIEnv * env, jobject, QtJambiNativeID r, QtJambiNativeID s) @@ -1698,6 +1670,11 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal__1_1qt_1createMetaTy } if(copy){ if(QSharedPointer link = QtJambiLink::findLinkForJavaInterface(env, copy)){ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(id).iface()->copyCtr){ + JavaException::raiseUnsupportedOperationException(env, qPrintable(QString("Unable to create value of meta type %1 due to missing copy constructor.").arg(QLatin1String(QMetaType::typeName(id)))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant(QTJAMBI_METATYPE(id), link->pointer()); return qtjambi_from_qvariant(env, variant); }else{ @@ -1715,6 +1692,11 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal__1_1qt_1createMetaTy } } } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(id).iface()->defaultCtr){ + JavaException::raiseUnsupportedOperationException(env, qPrintable(QString("Unable to create value of meta type %1 due to missing default constructor.").arg(QLatin1String(QMetaType::typeName(id)))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant(QTJAMBI_METATYPE(id), nullptr); return qtjambi_from_qvariant(env, variant); }catch(const JavaException& exn){ @@ -2194,17 +2176,19 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal_monitorExit) } extern "C" Q_DECL_EXPORT jobject JNICALL -QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal_getListOfExtraSignal) - (JNIEnv *env, jclass, QtJambiNativeID sender__id) +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiInternal_getExtraSignal) + (JNIEnv *env, jclass, QtJambiNativeID sender__id, QtJambiNativeID method__id) { try{ if(QSharedPointer sender = QtJambiLink::fromNativeId(sender__id)){ - if(sender->isSharedPointer()){ - QSharedPointerToQObjectLink* slink = static_cast(sender.data()); - return slink->getListOfExtraSignal(env); - }else{ - PointerToQObjectLink* plink = static_cast(sender.data()); - return plink->getListOfExtraSignal(env); + if(const QMetaMethod *method = qtjambi_object_from_nativeId(method__id)){ + if(sender->isSharedPointer()){ + QSharedPointerToQObjectLink* slink = static_cast(sender.data()); + return slink->getExtraSignal(env, *method); + }else{ + PointerToQObjectLink* plink = static_cast(sender.data()); + return plink->getExtraSignal(env, *method); + } } } }catch(const JavaException& exn){ @@ -2571,20 +2555,28 @@ qint64 QJarEntryEngine::size() const{ } qint64 QJarEntryEngine::read(char *data, qint64 maxlen) { + qint64 readBytes = 0; if(m_stream){ if(JNIEnv* env = qtjambi_current_environment()){ QTJAMBI_JNI_LOCAL_FRAME(env, 600) try{ - QtJambiScope __qtjambi_scope; - jbyteArray _data = qtjambi_array_cast(env, __qtjambi_scope, data, jsize(qMin(qint64(INT_MAX), maxlen))); - return Java::Runtime::InputStream::read(env, m_stream.object(), _data); + while(readBytes(env, __qtjambi_scope, data+readBytes, jsize(qMin(qint64(INT_MAX), maxlen-readBytes))); + jint r = Java::Runtime::InputStream::read(env, m_stream.object(), _data); + if(r<=0) + break; + readBytes += r; + } }catch(const JavaException& exn){ exn.report(env); - return 0; } } } - return 0; + if(readBytes==0) + return -1; + m_pos += readBytes; + return readBytes; } bool QJarEntryEngine::reset() { @@ -2607,7 +2599,24 @@ bool QJarEntryEngine::reopen() { bool QJarEntryEngine::seek(qint64 offset) { if(offset < 0) return false; + if(m_pos < offset) { + if(JNIEnv* env = qtjambi_current_environment()){ + QTJAMBI_JNI_LOCAL_FRAME(env, 600) + while (m_pos < offset) { + qint64 skipBytesRemaining = qMin(offset - m_pos, qint64(std::numeric_limits::max)); + + // InputStream#skip(long) may not skip all the requested bytes in a single invocation + qint64 skipBytesActual = Java::Runtime::InputStream::skip(env, m_stream.object(), skipBytesRemaining); + if(skipBytesActual > 0) + m_pos += skipBytesActual; // The actual number of bytes skipped + else + break; + } + } + } + if(m_pos == offset) + return true; if (!open(m_openMode)) // open() will automatically force a close() return false; if (offset < m_pos) { @@ -2615,21 +2624,23 @@ bool QJarEntryEngine::seek(qint64 offset) { return false; } - if(JNIEnv* env = qtjambi_current_environment()){ - QTJAMBI_JNI_LOCAL_FRAME(env, 600) - while (m_pos < offset) { - qint64 skipBytesRemaining = qMin(offset - m_pos, qint64(std::numeric_limits::max)); - - // InputStream#skip(long) may not skip all the requested bytes in a single invocation - qint64 skipBytesActual = Java::Runtime::InputStream::skip(env, m_stream.object(), skipBytesRemaining); - if(skipBytesActual > 0) - m_pos += skipBytesActual; // The actual number of bytes skipped - else - return false; - } - return true; + if(m_pos < offset) { + if(JNIEnv* env = qtjambi_current_environment()){ + QTJAMBI_JNI_LOCAL_FRAME(env, 600) + while (m_pos < offset) { + qint64 skipBytesRemaining = qMin(offset - m_pos, qint64(std::numeric_limits::max)); + + // InputStream#skip(long) may not skip all the requested bytes in a single invocation + qint64 skipBytesActual = Java::Runtime::InputStream::skip(env, m_stream.object(), skipBytesRemaining); + if(skipBytesActual > 0) + m_pos += skipBytesActual; // The actual number of bytes skipped + else + return false; + } + return true; + }else return false; } - return false; + return true; } #ifdef Q_OS_ANDROID diff --git a/src/cpp/qtjambi/qtjambi_future.cpp b/src/cpp/qtjambi/qtjambi_future.cpp index 72ab06f3..52830c8d 100644 --- a/src/cpp/qtjambi/qtjambi_future.cpp +++ b/src/cpp/qtjambi/qtjambi_future.cpp @@ -41,39 +41,6 @@ FutureCallOut::FutureCallOut(QSharedPointer&& sourceFuture m_resultRetranslator(resultRetranslator), m_reverseFutureCallOut(this) {} -#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) -#define CREATE_CALLOUT_EVENT(X) QFutureCallOutEvent(X) -#define CREATE_CALLOUT_EVENT3(X,Y,Z) QFutureCallOutEvent(X,Y,Z) -#else -struct FutureCallOutEvent : public QEvent{ - explicit FutureCallOutEvent(QFutureCallOutEvent::CallOutType callOutType, int index1 = -1) - : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(-1) - { } - FutureCallOutEvent(QFutureCallOutEvent::CallOutType callOutType, int index1, int index2) - : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(index2) - { } - - FutureCallOutEvent(QFutureCallOutEvent::CallOutType callOutType, int index1, const QString &text) - : QEvent(QEvent::FutureCallOut), - callOutType(callOutType), - index1(index1), - index2(-1), - text(text) - { } - - static const QFutureCallOutEvent& convert(const FutureCallOutEvent& evt){ - return reinterpret_cast(evt); - } - - QFutureCallOutEvent::CallOutType callOutType; - int index1; - int index2; - QString text; -}; -#define CREATE_CALLOUT_EVENT(X) FutureCallOutEvent::convert(FutureCallOutEvent(X)) -#define CREATE_CALLOUT_EVENT3(X,Y,Z) FutureCallOutEvent::convert(FutureCallOutEvent(X,Y,Z)) -#endif - void FutureCallOut::initialize() { Q_ASSERT(!m_sourceFuture.isNull()); @@ -93,7 +60,7 @@ void FutureCallOut::initialize() const auto currentState = m_sourceFuture->d->state.loadRelaxed(); try{ if (currentState & QFutureInterfaceBase::Started) { - postCallOutEvent(CREATE_CALLOUT_EVENT(QFutureCallOutEvent::Started)); + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Started)); #if QT_VERSION < QT_VERSION_CHECK(6, 3, 0) postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange, m_sourceFuture->d->m_progressMinimum, @@ -103,14 +70,14 @@ void FutureCallOut::initialize() m_sourceFuture->d->m_progressText)); #else if(m_sourceFuture->d->m_progress){ - postCallOutEvent(CREATE_CALLOUT_EVENT3(QFutureCallOutEvent::ProgressRange, + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange, m_sourceFuture->d->m_progress->minimum, m_sourceFuture->d->m_progress->maximum)); - postCallOutEvent(CREATE_CALLOUT_EVENT3(QFutureCallOutEvent::Progress, + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Progress, m_sourceFuture->d->m_progressValue, m_sourceFuture->d->m_progress->text)); }else{ - postCallOutEvent(CREATE_CALLOUT_EVENT3(QFutureCallOutEvent::Progress, + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Progress, m_sourceFuture->d->m_progressValue, QString())); } @@ -136,7 +103,7 @@ void FutureCallOut::initialize() while (it != m_sourceFuture->d->data.m_results.end()) { const int begin = it.resultIndex(); const int end = begin + it.batchSize(); - postCallOutEvent(CREATE_CALLOUT_EVENT3(QFutureCallOutEvent::ResultsReady, + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady, begin, end)); @@ -150,19 +117,19 @@ void FutureCallOut::initialize() postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Paused)); #else if (currentState & QFutureInterfaceBase::Suspended) - postCallOutEvent(CREATE_CALLOUT_EVENT(QFutureCallOutEvent::Suspended)); + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Suspended)); else if (currentState & QFutureInterfaceBase::Suspending) - postCallOutEvent(CREATE_CALLOUT_EVENT(QFutureCallOutEvent::Suspending)); + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Suspending)); #endif if (currentState & QFutureInterfaceBase::Canceled) - postCallOutEvent(CREATE_CALLOUT_EVENT(QFutureCallOutEvent::Canceled)); + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Canceled)); }catch(...){ delete this; throw; } if (currentState & QFutureInterfaceBase::Finished){ - postCallOutEvent(CREATE_CALLOUT_EVENT(QFutureCallOutEvent::Finished)); + postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Finished)); }else{ m_sourceFuture->d->outputConnections.append(this); QMutexLocker locker2(&m_targetFuture->d->m_mutex); diff --git a/src/cpp/qtjambi/qtjambi_plugin.cpp b/src/cpp/qtjambi/qtjambi_plugin.cpp index 02833e28..f366a97b 100644 --- a/src/cpp/qtjambi/qtjambi_plugin.cpp +++ b/src/cpp/qtjambi/qtjambi_plugin.cpp @@ -1,8 +1,4 @@ #include -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif #include #include #include diff --git a/src/cpp/qtjambi/qtjambi_registry.cpp b/src/cpp/qtjambi/qtjambi_registry.cpp index ed044169..835356c7 100644 --- a/src/cpp/qtjambi/qtjambi_registry.cpp +++ b/src/cpp/qtjambi/qtjambi_registry.cpp @@ -110,6 +110,8 @@ Q_GLOBAL_STATIC(MetaObjectHash, gOriginalMetaObjectHash) Q_GLOBAL_STATIC(MetaObjectHash, gHasCustomMetaObjectHash) typedef QHash > SignalMetaInfoHash; Q_GLOBAL_STATIC(SignalMetaInfoHash, gSignalMetaInfos) +typedef QHash > ExtraSignalsOfMetaObjectHash; +Q_GLOBAL_STATIC(ExtraSignalsOfMetaObjectHash, gExtraSignalsOfMetaObject) typedef QHash TypeIdsByMetaObjectHash; Q_GLOBAL_STATIC(TypeIdsByMetaObjectHash, gTypeIdsByMetaObject) typedef QHash QMetaMethodRenamerByMetaObjectHash; @@ -1694,6 +1696,44 @@ const QVector* signalMetaInfos(const QMetaObject* metaObje } } +QList getExtraSignalsOfMetaObject(const QMetaObject* metaObject){ + { + QReadLocker lock(gLock()); + if(gExtraSignalsOfMetaObject->contains(metaObject)) + return gExtraSignalsOfMetaObject->value(metaObject); + } + QList extraSignals; + QSet availableSignalInfos; + { + const QMetaObject* currentMetaObject = metaObject; + do{ + if(const QVector* infos = signalMetaInfos(currentMetaObject)){ + for(const SignalMetaInfo& info : *infos){ + availableSignalInfos.insert(info.signal_method_index_provider()); + } + } + currentMetaObject = currentMetaObject->superClass(); + }while(currentMetaObject); + } + const int methodCount = metaObject->methodCount(); + for(int i=0; imethod(i); + if(method.isValid() + && method.methodType()==QMetaMethod::Signal + && !availableSignalInfos.contains(method.methodIndex()) + && !QtJambiMetaObject::isInstance(method.enclosingMetaObject())){ + extraSignals << method; + } + } + { + QWriteLocker lock(gLock()); + if(gExtraSignalsOfMetaObject->contains(metaObject)) + return gExtraSignalsOfMetaObject->value(metaObject); + gExtraSignalsOfMetaObject->insert(metaObject, extraSignals); + } + return extraSignals; +} + ParameterInfoProvider registeredParameterInfoProvider(const QMetaObject* metaObject) { QReadLocker locker(gLock()); @@ -2446,6 +2486,12 @@ void clear_registry_at_shutdown(JNIEnv * env){ if(!gFieldHash.isDestroyed()) gFieldHash->clear(); } + { + QWriteLocker locker(gLock()); + Q_UNUSED(locker) + if(!gExtraSignalsOfMetaObject.isDestroyed()) + gExtraSignalsOfMetaObject->clear(); + } if(env){ #ifdef QTJAMBI_LOG_CLASSNAMES printf("DeleteGlobalRef of %i classes:\n", classIdHash.keys().size()); diff --git a/src/cpp/qtjambi/qtjambi_registry_p.h b/src/cpp/qtjambi/qtjambi_registry_p.h index 8ad8919d..b410e4bf 100644 --- a/src/cpp/qtjambi/qtjambi_registry_p.h +++ b/src/cpp/qtjambi/qtjambi_registry_p.h @@ -80,6 +80,7 @@ const std::type_info* getTypeByMetaObject(const QMetaObject* metaObject); int registeredMetaTypeID(const std::type_info& typeId); int registeredInterfaceOffset(const std::type_info& qt_base, const std::type_info& qt_interface); const QVector* signalMetaInfos(const QMetaObject* metaObject); +QList getExtraSignalsOfMetaObject(const QMetaObject* metaObject); ParameterInfoProvider registeredParameterInfoProvider(const QMetaObject* metaObject); bool isValueOwner(const QMetaObject* metaObject); const std::type_info* getTypeByMetaType(int metaType); diff --git a/src/cpp/qtjambi/qtjambi_thread.cpp b/src/cpp/qtjambi/qtjambi_thread.cpp index 54238840..440aed79 100644 --- a/src/cpp/qtjambi/qtjambi_thread.cpp +++ b/src/cpp/qtjambi/qtjambi_thread.cpp @@ -35,10 +35,6 @@ ****************************************************************************/ #include -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif QT_WARNING_DISABLE_DEPRECATED diff --git a/src/cpp/qtjambi/qtjambi_typeinfo.cpp b/src/cpp/qtjambi/qtjambi_typeinfo.cpp index f6c938c8..3ca361d6 100644 --- a/src/cpp/qtjambi/qtjambi_typeinfo.cpp +++ b/src/cpp/qtjambi/qtjambi_typeinfo.cpp @@ -29,10 +29,6 @@ #include QT_WARNING_DISABLE_DEPRECATED -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif #include #include diff --git a/src/cpp/qtjambi/qtjambilink.cpp b/src/cpp/qtjambi/qtjambilink.cpp index e0619c79..db8400cd 100644 --- a/src/cpp/qtjambi/qtjambilink.cpp +++ b/src/cpp/qtjambi/qtjambilink.cpp @@ -36,10 +36,6 @@ ****************************************************************************/ #include -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 -#endif QT_WARNING_DISABLE_DEPRECATED #include "qtjambi_core.h" @@ -429,44 +425,6 @@ jobject getNativeLink(JNIEnv *env, jobject java){ return nativeLink; } -QList extra_signals(const QMetaObject* metaObject){ - QList extraSignals; - if (!QtJambiMetaObject::isInstance(metaObject)){ - const QMetaObject* knownMetaObject = metaObject; - { - const QVector *infos = nullptr; - do{ - infos = signalMetaInfos(knownMetaObject); - if(infos!=nullptr) - break; - knownMetaObject = knownMetaObject->superClass(); - }while(knownMetaObject); - if(infos==nullptr){ - knownMetaObject = metaObject; - } - } - - if(knownMetaObject != metaObject){ - QSet knownMetaObjects; - { - const QMetaObject* parentMetaObject = knownMetaObject; - do{ - knownMetaObjects.insert(parentMetaObject); - parentMetaObject = parentMetaObject->superClass(); - }while(parentMetaObject); - } - const int methodCount = metaObject->methodCount(); - for(int i=0; imethod(i); - if(method.isValid() && !knownMetaObjects.contains(method.enclosingMetaObject()) && method.methodType()==QMetaMethod::Signal){ - extraSignals << method; - } - } - } - } - return extraSignals; -} - const QSharedPointer& QtJambiLink::createLinkForQObject(JNIEnv *env, jobject javaObject, QObject *object, bool created_by_java, bool is_shell, const QMetaObject* superTypeForCustomMetaObject) { QTJAMBI_DEBUG_METHOD_PRINT("native", "QtJambiLink::createLinkForQObject(JNIEnv *env, jobject java, QObject *object, bool created_by_java, bool hasCustomMetaObject)") @@ -487,17 +445,17 @@ const QSharedPointer& QtJambiLink::createLinkForQObject(JNIEnv *env } }else{ const QMetaObject* metaObject = object->metaObject(); - QList extraSignals = extra_signals(metaObject); + QList extraSignals = getExtraSignalsOfMetaObject(metaObject); if(interfaceOffsets && !interfaceOffsets->offsets.isEmpty()){ if(extraSignals.isEmpty()) qtJambiLink = new PointerToQObjectInterfaceLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, false, is_shell, ocurredException); else - qtJambiLink = new PointerToQObjectInterfaceWithExtraSignalsLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, false, is_shell, extraSignals, ocurredException); + qtJambiLink = new PointerToQObjectInterfaceWithExtraSignalsLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, false, is_shell, ocurredException); }else{ if(extraSignals.isEmpty()) qtJambiLink = new PointerToQObjectLink(env, nativeLink, javaObject, metaObject, object, created_by_java, false, is_shell, ocurredException); else - qtJambiLink = new PointerToQObjectWithExtraSignalsLink(env, nativeLink, javaObject, metaObject, object, created_by_java, false, is_shell, extraSignals, ocurredException); + qtJambiLink = new PointerToQObjectWithExtraSignalsLink(env, nativeLink, javaObject, metaObject, object, created_by_java, false, is_shell, ocurredException); } } if(ocurredException.object()){ @@ -530,18 +488,18 @@ const QSharedPointer& QtJambiLink::createLinkForNewQObject(JNIEnv * qtJambiLink = new PointerToPendingQObjectLink(env, nativeLink, javaObject, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException); } }else{ - QList extraSignals = extra_signals(metaObject); + QList extraSignals = getExtraSignalsOfMetaObject(metaObject); if(interfaceOffsets && !interfaceOffsets->offsets.isEmpty()){ if(extraSignals.isEmpty()){ qtJambiLink = new PointerToQObjectInterfaceLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException); }else{ - qtJambiLink = new PointerToQObjectInterfaceWithExtraSignalsLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, isDeclarativeCall, is_shell, extraSignals, ocurredException); + qtJambiLink = new PointerToQObjectInterfaceWithExtraSignalsLink(env, nativeLink, javaObject, interfaceOffsets->offsets, interfaceOffsets->interfaces, interfaceOffsets->inheritedInterfaces, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException); } }else{ if(extraSignals.isEmpty()){ qtJambiLink = new PointerToQObjectLink(env, nativeLink, javaObject, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException); }else{ - qtJambiLink = new PointerToQObjectWithExtraSignalsLink(env, nativeLink, javaObject, metaObject, object, created_by_java, isDeclarativeCall, is_shell, extraSignals, ocurredException); + qtJambiLink = new PointerToQObjectWithExtraSignalsLink(env, nativeLink, javaObject, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException); } } } @@ -2462,11 +2420,10 @@ void DeletablePointerToObjectLink::deleteNativeObject(JNIEnv *env, bool forced) // ### BEGIN ################### PointerToQObjectLink ###################### BEGIN #### void qtjambi_resolve_signals(JNIEnv *env, jobject java_object, const QMetaObject* metaObject, JavaException& ocurredException); -const QHash qtjambi_resolve_extra_signals(JNIEnv *env, jobject java_object, const QList& extraSignals, JavaException& ocurredException); +JObjectWrapper qtjambi_resolve_extra_signal(JNIEnv *env, jobject java_object, const QMetaMethod& method); -PointerToQObjectWithExtraSignalsLink::PointerToQObjectWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *object, bool created_by_java, bool isDeclarativeCall, bool is_shell, const QList& extraSignals, JavaException& ocurredException) - : PointerToQObjectLink(env, nativeLink, jobj, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException), - m_extraSignals(qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException)) +PointerToQObjectWithExtraSignalsLink::PointerToQObjectWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *object, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException) + : PointerToQObjectLink(env, nativeLink, jobj, metaObject, object, created_by_java, isDeclarativeCall, is_shell, ocurredException) { } @@ -3006,11 +2963,11 @@ QSharedPointerToQObjectLink::QSharedPointerToQObjectLink(JNIEnv *env, jobject na if(superTypeForCustomMetaObject){ m_pointerContainer = new PointerContainerWithPendingExtraSignals(env, local, superTypeForCustomMetaObject, this->getStrongPointer(), ptr_shared_pointer, isShell(), shared_pointer_deleter, pointerGetter, ocurredException); }else{ - QList extraSignals = extra_signals(metaObject); + QList extraSignals = getExtraSignalsOfMetaObject(metaObject); if(extraSignals.isEmpty()) m_pointerContainer = new PointerContainer(env, local, metaObject, this->getStrongPointer(), ptr_shared_pointer, isShell(), shared_pointer_deleter, pointerGetter, ocurredException); else - m_pointerContainer = new PointerContainerWithExtraSignals(env, local, metaObject, this->getStrongPointer(), ptr_shared_pointer, isShell(), shared_pointer_deleter, pointerGetter, extraSignals, ocurredException); + m_pointerContainer = new PointerContainerWithExtraSignals(env, local, metaObject, this->getStrongPointer(), ptr_shared_pointer, isShell(), shared_pointer_deleter, pointerGetter, ocurredException); } } if(!ocurredException.object()){ @@ -3219,23 +3176,8 @@ bool QSharedPointerToObjectLink::isQObject() const { return false; } -jobject PointerToQObjectLink::getListOfExtraSignal(JNIEnv * env) const{ - return qtjambi_arraylist_new(env, 0); -} - -void PointerToPendingQObjectLink::resolveListOfExtraSignal(JNIEnv * env) const{ - JavaException ocurredException; - if(jobject jobj = getJavaObjectLocalRef(env)){ - if(QObject* object = qobject()){ - m_metaObject = object->metaObject(); - QList extraSignals = extra_signals(m_metaObject); - m_extraSignals = qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException); - env->DeleteLocalRef(jobj); - } - } - const_cast(this)->m_flags.setFlag(Flag::IsPendingObjectResolved); - if(ocurredException.object()) - ocurredException.raise(); +jobject PointerToQObjectLink::getExtraSignal(JNIEnv*, const QMetaMethod&) const{ + return nullptr; } PointerToPendingQObjectLink::PointerToPendingQObjectLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException) @@ -3277,19 +3219,25 @@ void PointerToPendingQObjectLink::init(JNIEnv* env){ } } -jobject PointerToPendingQObjectLink::getListOfExtraSignal(JNIEnv * env) const{ - if(!m_flags.testFlag(Flag::IsPendingObjectResolved)){ - resolveListOfExtraSignal(env); - }else if(QObject* object = qobject()){ - if(m_metaObject != object->metaObject()) - resolveListOfExtraSignal(env); - } - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); +jobject PointerToPendingQObjectLink::getExtraSignal(JNIEnv * env, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); + } } - return result; + return nullptr; } PointerToPendingQObjectInterfaceLink::PointerToPendingQObjectInterfaceLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException) @@ -3331,56 +3279,71 @@ void PointerToPendingQObjectInterfaceLink::init(JNIEnv* env){ } } -void PointerToPendingQObjectInterfaceLink::resolveListOfExtraSignal(JNIEnv * env) const{ - JavaException ocurredException; - if(jobject jobj = getJavaObjectLocalRef(env)){ - if(QObject* object = qobject()){ - m_metaObject = object->metaObject(); - QList extraSignals = extra_signals(m_metaObject); - m_extraSignals = qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException); - env->DeleteLocalRef(jobj); +jobject PointerToPendingQObjectInterfaceLink::getExtraSignal(JNIEnv * env, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); } } - const_cast(this)->m_flags.setFlag(Flag::IsPendingObjectResolved); - if(ocurredException.object()) - ocurredException.raise(); + return nullptr; } -jobject PointerToPendingQObjectInterfaceLink::getListOfExtraSignal(JNIEnv * env) const{ - if(!m_flags.testFlag(Flag::IsPendingObjectResolved)){ - resolveListOfExtraSignal(env); - }else if(QObject* object = qobject()){ - if(m_metaObject != object->metaObject()) - resolveListOfExtraSignal(env); - } - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); - } - return result; -} - -jobject PointerToQObjectWithExtraSignalsLink::getListOfExtraSignal(JNIEnv * env) const{ - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); +jobject PointerToQObjectWithExtraSignalsLink::getExtraSignal(JNIEnv * env, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); + } } - return result; + return nullptr; } -jobject PointerToQObjectInterfaceWithExtraSignalsLink::getListOfExtraSignal(JNIEnv * env) const{ - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); +jobject PointerToQObjectInterfaceWithExtraSignalsLink::getExtraSignal(JNIEnv * env, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); + } } - return result; + return nullptr; } -jobject PointerContainer::getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink*) const{ - return qtjambi_arraylist_new(env, 0); +jobject PointerContainer::getExtraSignal(JNIEnv *, const QSharedPointerToQObjectLink*, const QMetaMethod&) const{ + return nullptr; } QString PointerToObjectLink::describe() const{ @@ -3437,8 +3400,8 @@ QString QSharedPointerToObjectLink::describe() const{ return strg; } -jobject QSharedPointerToQObjectLink::getListOfExtraSignal(JNIEnv * env) const{ - return m_pointerContainer->getListOfExtraSignal(env, this); +jobject QSharedPointerToQObjectLink::getExtraSignal(JNIEnv * env, const QMetaMethod& method) const{ + return m_pointerContainer->getExtraSignal(env, this, method); } void QSharedPointerToQObjectLink::removeInterface(const std::type_info&){ @@ -3466,20 +3429,30 @@ QString QSharedPointerToQObjectLink::describe() const{ // ### END ################# QSharedPointerToQObjectLink ################### END ### -PointerContainerWithExtraSignals::PointerContainerWithExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, const QList& extraSignals, JavaException& ocurredException) - : PointerContainer(env, jobj, metaObject, link, ptr_shared_pointer, isShell, shared_pointer_deleter, pointerGetter, ocurredException), - m_extraSignals(qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException)) +PointerContainerWithExtraSignals::PointerContainerWithExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, JavaException& ocurredException) + : PointerContainer(env, jobj, metaObject, link, ptr_shared_pointer, isShell, shared_pointer_deleter, pointerGetter, ocurredException) { - } -jobject PointerContainerWithExtraSignals::getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink*) const{ - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); +jobject PointerContainerWithExtraSignals::getExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, link->getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); + } } - return result; + return nullptr; } PointerContainerWithPendingExtraSignals::PointerContainerWithPendingExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, JavaException& ocurredException) @@ -3490,34 +3463,25 @@ PointerContainerWithPendingExtraSignals::PointerContainerWithPendingExtraSignals } -void PointerContainerWithPendingExtraSignals::resolveListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const { - JavaException ocurredException; - if(jobject jobj = link->getJavaObjectLocalRef(env)){ - if(QObject* object = qobject()){ - m_metaObject = object->metaObject(); - QList extraSignals = extra_signals(m_metaObject); - m_extraSignals = qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException); - env->DeleteLocalRef(jobj); +jobject PointerContainerWithPendingExtraSignals::getExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link, const QMetaMethod& method) const{ + if(QObject* object = qobject()){ + QList extraSignals = getExtraSignalsOfMetaObject(object->metaObject()); + if(extraSignals.contains(method)){ + QReadLocker rlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())){ + rlocker.unlock(); + JObjectWrapper signal = qtjambi_resolve_extra_signal(env, link->getJavaObjectLocalRef(env), method); + { + QWriteLocker wlocker(QtJambiLinkUserData::lock()); + if(!m_extraSignals.contains(method.methodIndex())) + m_extraSignals[method.methodIndex()] = signal; + } + rlocker.relock(); + } + return m_extraSignals.value(method.methodIndex()).object(); } } - const_cast(link)->m_flags.setFlag(QtJambiLink::Flag::IsPendingObjectResolved); - if(ocurredException.object()) - ocurredException.raise(); -} - -jobject PointerContainerWithPendingExtraSignals::getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const{ - if(!link->m_flags.testFlag(QtJambiLink::Flag::IsPendingObjectResolved)){ - resolveListOfExtraSignal(env, link); - }else if(QObject* object = qobject()){ - if(m_metaObject != object->metaObject()) - resolveListOfExtraSignal(env, link); - } - jobject result = qtjambi_arraylist_new(env, 0); - for(const QtJambiSignalInfo& info : m_extraSignals){ - if(info.signalObject()) - qtjambi_collection_add(env, result, env->NewLocalRef(info.signalObject())); - } - return result; + return nullptr; } @@ -3567,9 +3531,8 @@ void* PointerContainer::getSharedPointer() const{ return m_ptr_shared_pointer; } -PointerToQObjectInterfaceWithExtraSignalsLink::PointerToQObjectInterfaceWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, const QList& extraSignals, JavaException& ocurredException) - : PointerToQObjectInterfaceLink(env, nativeLink, jobj, interfaceOffsets, interfaces, inheritedInterfaces, metaObject, ptr, created_by_java, isDeclarativeCall, is_shell, ocurredException), - m_extraSignals(qtjambi_resolve_extra_signals(env, jobj, extraSignals, ocurredException)) +PointerToQObjectInterfaceWithExtraSignalsLink::PointerToQObjectInterfaceWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException) + : PointerToQObjectInterfaceLink(env, nativeLink, jobj, interfaceOffsets, interfaces, inheritedInterfaces, metaObject, ptr, created_by_java, isDeclarativeCall, is_shell, ocurredException) { } @@ -3756,31 +3719,6 @@ QObject* PointerContainer::qobject() const{ return m_ptr_shared_pointer && m_shared_pointer_getter ? m_shared_pointer_getter(m_ptr_shared_pointer) : nullptr; } -QtJambiSignalInfo::QtJambiSignalInfo(const QtJambiSignalInfo & info): - m_signalObject(info.m_signalObject) -{} - -QtJambiSignalInfo::QtJambiSignalInfo(QtJambiSignalInfo && info): - m_signalObject(info.m_signalObject) -{} - -QtJambiSignalInfo::QtJambiSignalInfo(): m_signalObject() -{} - -QtJambiSignalInfo::QtJambiSignalInfo(JNIEnv* env, jobject object, bool global) - : m_signalObject(env, object, global) -{} - -QtJambiSignalInfo & QtJambiSignalInfo::operator =(const QtJambiSignalInfo & info) -{ - m_signalObject = info.m_signalObject; - return *this; -} - -jobject QtJambiSignalInfo::signalObject() const{ - return m_signalObject.object(); -} - void qtjambi_set_java_ownership_for_toplevel_object(JNIEnv *env, QObject* qobject) { if(qobject && !qobject->parent()){ @@ -4160,67 +4098,56 @@ void qtjambi_resolve_signals(JNIEnv *env, jobject java_object, const QMetaObject } } -const QHash qtjambi_resolve_extra_signals(JNIEnv *env, jobject java_object, const QList& extraSignals, JavaException& ocurredException){ - QHash sinfos; - if(!ocurredException.object()){ - try{ - sinfos.reserve(extraSignals.size()); - QSet convertedMetaObjects; - for(QMetaMethod method : extraSignals){ - jobject signalObject = nullptr; - switch(method.parameterCount()){ - case 0: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal0::newInstance(env, java_object); - break; - case 1: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal1::newInstance(env, java_object); - break; - case 2: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal2::newInstance(env, java_object); - break; - case 3: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal3::newInstance(env, java_object); - break; - case 4: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal4::newInstance(env, java_object); - break; - case 5: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal5::newInstance(env, java_object); - break; - case 6: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal6::newInstance(env, java_object); - break; - case 7: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal7::newInstance(env, java_object); - break; - case 8: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal8::newInstance(env, java_object); - break; - case 9: - signalObject = Java::QtJambi::QInstanceMemberSignals$Signal9::newInstance(env, java_object); - break; - default: - break; - } - if(signalObject){ - { - const QMetaObject* parentMetaObject = method.enclosingMetaObject(); - while(parentMetaObject && !convertedMetaObjects.contains(parentMetaObject)){ - qtjambi_cast(env, parentMetaObject); - convertedMetaObjects.insert(parentMetaObject); - parentMetaObject = parentMetaObject->superClass(); - } - } - jobject signalTypes = qtjambi_get_signal_types(env, nullptr, method); - Java::QtJambi::QtJambiSignals$AbstractSignal::initializeSignal(env, signalObject, env->GetObjectClass(java_object), signalTypes, method.methodIndex(), jlong(method.enclosingMetaObject())); - sinfos.insert(method.methodIndex(), QtJambiSignalInfo(env, signalObject, true)); - }else{ - sinfos.insert(method.methodIndex(), QtJambiSignalInfo()); - } +JObjectWrapper qtjambi_resolve_extra_signal(JNIEnv *env, jobject java_object, const QMetaMethod& method){ + QSet convertedMetaObjects; + jobject signalObject = nullptr; + switch(method.parameterCount()){ + case 0: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal0::newInstance(env, java_object); + break; + case 1: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal1::newInstance(env, java_object); + break; + case 2: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal2::newInstance(env, java_object); + break; + case 3: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal3::newInstance(env, java_object); + break; + case 4: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal4::newInstance(env, java_object); + break; + case 5: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal5::newInstance(env, java_object); + break; + case 6: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal6::newInstance(env, java_object); + break; + case 7: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal7::newInstance(env, java_object); + break; + case 8: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal8::newInstance(env, java_object); + break; + case 9: + signalObject = Java::QtJambi::QInstanceMemberSignals$Signal9::newInstance(env, java_object); + break; + default: + break; + } + if(signalObject){ + { + const QMetaObject* parentMetaObject = method.enclosingMetaObject(); + while(parentMetaObject && !convertedMetaObjects.contains(parentMetaObject)){ + qtjambi_cast(env, parentMetaObject); + convertedMetaObjects.insert(parentMetaObject); + parentMetaObject = parentMetaObject->superClass(); } - }catch(const JavaException& exn){ - ocurredException.addSuppressed(env, exn); } + jobject signalTypes = qtjambi_get_signal_types(env, nullptr, method); + Java::QtJambi::QtJambiSignals$AbstractSignal::initializeSignal(env, signalObject, env->GetObjectClass(java_object), signalTypes, method.methodIndex(), jlong(method.enclosingMetaObject())); + return JObjectWrapper(env, signalObject, true); + }else{ + return JObjectWrapper(); } - return sinfos; } diff --git a/src/cpp/qtjambi/qtjambilink_p.h b/src/cpp/qtjambi/qtjambilink_p.h index a40e8a97..b29a20ed 100644 --- a/src/cpp/qtjambi/qtjambilink_p.h +++ b/src/cpp/qtjambi/qtjambilink_p.h @@ -110,20 +110,6 @@ class JObjectSynchronizer{ const bool monitor; }; -class QtJambiSignalInfo -{ -public: - QtJambiSignalInfo(const QtJambiSignalInfo & info); - QtJambiSignalInfo(QtJambiSignalInfo && info); - QtJambiSignalInfo(); - QtJambiSignalInfo(JNIEnv* env, jobject object, bool global); - - QtJambiSignalInfo & operator =(const QtJambiSignalInfo & info); - jobject signalObject() const; -private: - JObjectWrapper m_signalObject; -}; - typedef std::function PointerQObjectGetterFunction; class QtJambiLink; @@ -171,7 +157,7 @@ class PointerContainer : public QObject{ ~PointerContainer() override; void* getSharedPointer() const; QObject *qobject() const; - virtual jobject getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const; + virtual jobject getExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link, const QMetaMethod& method) const; void setAsQObjectDeleted(); private: void* m_ptr_shared_pointer; @@ -183,21 +169,20 @@ class PointerContainer : public QObject{ class PointerContainerWithExtraSignals : public PointerContainer{ public: - explicit PointerContainerWithExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, const QList& extraSignals, JavaException& ocurredException); + explicit PointerContainerWithExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, JavaException& ocurredException); ~PointerContainerWithExtraSignals() override = default; - jobject getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const override; + jobject getExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link, const QMetaMethod& method) const override; private: - const QHash m_extraSignals; + mutable QHash m_extraSignals; }; class PointerContainerWithPendingExtraSignals : public PointerContainer{ public: explicit PointerContainerWithPendingExtraSignals(JNIEnv* env, jobject jobj, const QMetaObject* metaObject, const QSharedPointer& link, void* ptr_shared_pointer, bool isShell, PointerDeleter shared_pointer_deleter, PointerQObjectGetterFunction pointerGetter, JavaException& ocurredException); ~PointerContainerWithPendingExtraSignals() override = default; - jobject getListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const override; + jobject getExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link, const QMetaMethod& method) const override; private: - void resolveListOfExtraSignal(JNIEnv * env, const QSharedPointerToQObjectLink* link) const; - mutable QHash m_extraSignals; + mutable QHash m_extraSignals; mutable const QMetaObject* m_metaObject; }; @@ -629,7 +614,7 @@ class PointerToQObjectLink : public QtJambiLink{ void onDispose(JNIEnv *env) override; void onClean(JNIEnv *env) override; void invalidate(JNIEnv *env) override; - virtual jobject getListOfExtraSignal(JNIEnv * env) const; + virtual jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const; QString describe() const override; void init(JNIEnv* env) override; void removeInterface(const std::type_info&) override; @@ -641,12 +626,12 @@ class PointerToQObjectLink : public QtJambiLink{ class PointerToQObjectWithExtraSignalsLink : public PointerToQObjectLink{ protected: - PointerToQObjectWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, const QList& extraSignals, JavaException& ocurredException); + PointerToQObjectWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException); public: ~PointerToQObjectWithExtraSignalsLink() override = default; - jobject getListOfExtraSignal(JNIEnv * env) const override; + jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const override; private: - QHash m_extraSignals; + mutable QHash m_extraSignals; friend QtJambiLink; }; @@ -655,11 +640,10 @@ class PointerToPendingQObjectLink : public PointerToQObjectLink{ PointerToPendingQObjectLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException); public: ~PointerToPendingQObjectLink() override = default; - jobject getListOfExtraSignal(JNIEnv * env) const override; + jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const override; void init(JNIEnv* env) override; private: - void resolveListOfExtraSignal(JNIEnv * env) const; - mutable QHash m_extraSignals; + mutable QHash m_extraSignals; mutable const QMetaObject* m_metaObject; friend QtJambiLink; }; @@ -749,7 +733,7 @@ class QSharedPointerToQObjectLink : public QSharedPointerLink{ QString describe() const override; void removeInterface(const std::type_info&) override; bool isDeleteLater() const { return m_flags.testFlag(Flag::IsDeleteLater); } - jobject getListOfExtraSignal(JNIEnv * env) const; + jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const; private: void setDeleteLater(){ m_flags.setFlag(Flag::IsDeleteLater); } PointerContainer* m_pointerContainer; @@ -779,25 +763,24 @@ class PointerToPendingQObjectInterfaceLink : public PointerToQObjectInterfaceLin PointerToPendingQObjectInterfaceLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException); public: ~PointerToPendingQObjectInterfaceLink() override = default; - jobject getListOfExtraSignal(JNIEnv * env) const override; + jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const override; void init(JNIEnv* env) override; private: - void resolveListOfExtraSignal(JNIEnv * env) const; - mutable QHash m_extraSignals; + mutable QHash m_extraSignals; mutable const QMetaObject* m_metaObject; friend QtJambiLink; }; class PointerToQObjectInterfaceWithExtraSignalsLink : public PointerToQObjectInterfaceLink{ protected: - PointerToQObjectInterfaceWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, const QList& extraSignals, JavaException& ocurredException); + PointerToQObjectInterfaceWithExtraSignalsLink(JNIEnv *env, jobject nativeLink, jobject jobj, const QMap& interfaceOffsets, const QSet& interfaces, const QMap>& inheritedInterfaces, const QMetaObject* metaObject, QObject *ptr, bool created_by_java, bool isDeclarativeCall, bool is_shell, JavaException& ocurredException); public: ~PointerToQObjectInterfaceWithExtraSignalsLink() override = default; - jobject getListOfExtraSignal(JNIEnv * env) const override; + jobject getExtraSignal(JNIEnv * env, const QMetaMethod& method) const override; private: friend QtJambiLink; friend class PointerToQObjectInterfaceWithDetectedExtraSignalsLink; - QHash m_extraSignals; + mutable QHash m_extraSignals; }; class QSharedPointerToObjectInterfaceLink : public QSharedPointerToObjectLink{ diff --git a/src/cpp/qtjambi/qtjambimetaobject.cpp b/src/cpp/qtjambi/qtjambimetaobject.cpp index 7963eb78..3896cc1b 100644 --- a/src/cpp/qtjambi/qtjambimetaobject.cpp +++ b/src/cpp/qtjambi/qtjambimetaobject.cpp @@ -1221,16 +1221,25 @@ void QtJambiMetaObject::registerQPropertyField(int index, jfieldID field){ #endif //QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) jclass QtJambiMetaObject::javaClass(JNIEnv * env, const QMetaObject* metaObject, bool exactOrNull){ - if(const QtJambiMetaObject* dynamicMetaObject = QtJambiMetaObject::cast(metaObject)){ + if(!metaObject){ + return nullptr; + }else if(const QtJambiMetaObject* dynamicMetaObject = QtJambiMetaObject::cast(metaObject)){ return jclass(env->NewLocalRef(dynamicMetaObject->javaClass())); }else{ if(const std::type_info* typeId = getTypeByMetaObject(metaObject)){ jclass result = env->FindClass(getJavaName(*typeId)); qtjambi_throw_java_exception(env); return result; - }else if(exactOrNull){ + }else if(const std::type_info* typeId = getTypeByQtName(metaObject->className())){ + if(!registeredOriginalMetaObject(*typeId)){ + jclass result = env->FindClass(getJavaName(*typeId)); + qtjambi_throw_java_exception(env); + return result; + } + } + if(exactOrNull){ return nullptr; - }else if(metaObject && metaObject->superClass()){ + }else if(metaObject->superClass()){ return javaClass(env, metaObject->superClass(), exactOrNull); }else{ return Java::QtJambi::QtGadget::getClass(env); diff --git a/src/cpp/qtjambi/qtjambisignals.cpp b/src/cpp/qtjambi/qtjambisignals.cpp index 46c3dd9c..c75d30a7 100644 --- a/src/cpp/qtjambi/qtjambisignals.cpp +++ b/src/cpp/qtjambi/qtjambisignals.cpp @@ -36,10 +36,11 @@ ****************************************************************************/ #include + #if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -# define QT_CORE_INLINE_SINCE(major, minor) inline -# define QT_CORE_INLINE_IMPL_SINCE(major, minor) 1 +#include #endif + QT_WARNING_DISABLE_DEPRECATED #include "qtjambi_core.h" #include "qtjambi_repository_p.h" @@ -426,48 +427,6 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_internal_QtJambiSignals_00024NativeConnection return false; } -#if QT_VERSION >= QT_VERSION_CHECK(6,4,0) -struct QObjectPrivate::ConnectionOrSignalVector -{ - union { - // linked list of orphaned connections that need cleaning up - ConnectionOrSignalVector *nextInOrphanList; - // linked list of connections connected to slots in this object - Connection *next; - }; -}; - -struct QObjectPrivate::Connection : public ConnectionOrSignalVector -{ - // linked list of connections connected to slots in this object, next is in base class - Connection **prev; - // linked list of connections connected to signals in this object - QAtomicPointer nextConnectionList; - Connection *prevConnectionList; - - QObject *sender; - QAtomicPointer receiver; - QAtomicPointer receiverThreadData; - union { - StaticMetaCallFunction callFunction; - QtPrivate::QSlotObjectBase *slotObj; - }; - QAtomicPointer argumentTypes; - QAtomicInt ref_{2}; //ref_ is 2 for the use in the internal lists, and for the use in QMetaObject::Connection - uint id = 0; - ushort method_offset; - ushort method_relative; - signed int signal_index : 27; // In signal range (see QObjectPrivate::signalIndex()) - ushort connectionType : 2; // 0 == auto, 1 == direct, 2 == queued, 3 == blocking - ushort isSlotObject : 1; - ushort ownArgumentTypes : 1; - ushort isSingleShot : 1; - Connection() = delete; - ~Connection() = delete; - int method() const { Q_ASSERT(!isSlotObject); return method_offset + method_relative; } -}; -#endif - QObject* connectionSender(const QMetaObject::Connection* connection){ if(connection && *connection){ void * ptr = reinterpret_cast(connection)->d_ptr; diff --git a/src/cpp/qtjambi/qtjambitypemanager.cpp b/src/cpp/qtjambi/qtjambitypemanager.cpp index f6e9a7ec..f9db1043 100644 --- a/src/cpp/qtjambi/qtjambitypemanager.cpp +++ b/src/cpp/qtjambi/qtjambitypemanager.cpp @@ -700,6 +700,14 @@ QString QtJambiTypeManager::getExternalTypeName(JNIEnv* environment, const QStri case QMetaType::LongLong: case QMetaType::ULongLong: return "long"; case QMetaType::Bool: return "boolean"; + case QMetaType::QStringList: return "io/qt/core/QStringList"; + case QMetaType::QByteArrayList: return "io/qt/core/QList"; + case QMetaType::QVariantMap: return "io/qt/core/QMap"; + case QMetaType::QVariantHash: return "io/qt/core/QHash"; + case QMetaType::QVariantList: return "io/qt/core/QList"; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + case QMetaType::QVariantPair: return "io/qt/core/QPair"; +#endif case QMetaType::VoidStar: return "io/qt/QNativePointer"; default: break; @@ -738,10 +746,42 @@ QString QtJambiTypeManager::getExternalTypeName(JNIEnv* environment, const QStri return QLatin1String("java/lang/Enum"); else if (_internalTypeName=="JQFlagsWrapper") return QLatin1String("io/qt/QFlags"); - else if (_internalTypeName.startsWith("QPair<") && _internalTypeName.endsWith(">")) - return QLatin1String("io/qt/core/QPair"); - else if (_internalTypeName.startsWith("std::pair<") && _internalTypeName.endsWith(">")) + else if ((_internalTypeName.startsWith("std::pair<") || _internalTypeName.startsWith("QPair<")) && _internalTypeName.endsWith(">")) return QLatin1String("io/qt/core/QPair"); + else if (_internalTypeName.startsWith("QMap<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QMap"); + else if (_internalTypeName.startsWith("QMultiMap<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QMultiMap"); + else if (_internalTypeName.startsWith("QHash<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QHash"); + else if (_internalTypeName.startsWith("QMultiHash<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QMultiHash"); + else if (_internalTypeName.startsWith("QLinkedList<") && _internalTypeName.endsWith(">")) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return QLatin1String("java/util/LinkedList"); +#else + return QLatin1String("io/qt/core/QLinkedList"); +#endif + else if (_internalTypeName.startsWith("QList<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QList"); + else if (_internalTypeName.startsWith("QSet<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QSet"); + else if (_internalTypeName.startsWith("QQueue<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QQueue"); + else if (_internalTypeName.startsWith("QVector<") && _internalTypeName.endsWith(">")) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return QLatin1String("io/qt/core/QList"); +#else + return QLatin1String("io/qt/core/QVector"); +#endif + else if (_internalTypeName.startsWith("QStack<") && _internalTypeName.endsWith(">")) + return QLatin1String("io/qt/core/QStack"); + else if (_internalTypeName.startsWith("std::vector<") && _internalTypeName.endsWith(">")) + return QLatin1String("java/util/ArrayList"); + else if (_internalTypeName.startsWith("std::map<") && _internalTypeName.endsWith(">")) + return QLatin1String("java/util/HashMap"); + else if (_internalTypeName.startsWith("std::set<") && _internalTypeName.endsWith(">")) + return QLatin1String("java/util/HashSet"); const std::type_info* typeId = metaType.isValid() ? getTypeByMetaType(metaType) : nullptr; QString javaName; if(typeId){ @@ -801,23 +841,28 @@ QString QtJambiTypeManager::getExternalTypeName(JNIEnv* environment, const QStri if(metaType.isValid() && metaType.id()!=QMetaType::Nullptr && metaType.id()!=QMetaType::Void){ + QByteArray name = registeredJavaClassForCustomMetaType(metaType); + if(!name.isEmpty()){ + return QLatin1String(name); + } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QVariant variant(metaType.id(), nullptr); -#else - QVariant variant(metaType, nullptr); -#endif //QT_VERSION < QT_VERSION_CHECK(6, 0, 0) if(variant.canConvert(QMetaType::QVariantList)){ javaName = "io/qt/core/QList"; + }else if(variant.canConvert(QMetaType::QVariantMap)){ + javaName = "io/qt/core/QMap"; }else if(variant.canConvert(QMetaType::QVariantHash)){ javaName = "io/qt/core/QHash"; - }else if(variant.canConvert(QMetaType::QVariantMap)){ + } +#else + if(QMetaType::canConvert(QMetaType(metaType), QMetaType(QMetaType::QVariantList))){ + javaName = "io/qt/core/QList"; + }else if(QMetaType::canConvert(QMetaType(metaType), QMetaType(QMetaType::QVariantMap))){ javaName = "io/qt/core/QMap"; - }else{ - QByteArray name = registeredJavaClassForCustomMetaType(metaType); - if(!name.isEmpty()){ - return QLatin1String(name); - } + }else if(QMetaType::canConvert(QMetaType(metaType), QMetaType(QMetaType::QVariantHash))){ + javaName = "io/qt/core/QHash"; } +#endif } } if(!javaName.isEmpty() && pointerType==PointerType::initializer_list){ diff --git a/src/cpp/qtjambi_core/qtjambi_core_util.cpp b/src/cpp/qtjambi_core/qtjambi_core_util.cpp index 913493e4..afd80fa9 100644 --- a/src/cpp/qtjambi_core/qtjambi_core_util.cpp +++ b/src/cpp/qtjambi_core/qtjambi_core_util.cpp @@ -1988,6 +1988,22 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_propertyCount) return _result; } +extern "C" Q_DECL_EXPORT jobject JNICALL +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_propertyByIndex) + (JNIEnv *env, jobject, jlong metaObjectPointer, jint index) +{ + jobject _result{nullptr}; + QTJAMBI_TRY{ + if(metaObjectPointer){ + const QMetaObject *metaObject = reinterpret_cast(metaObjectPointer); + _result = qtjambi_cast(env, metaObject->property(index)); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return _result; +} + extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_property) (JNIEnv *env, jobject, jlong metaObjectPointer, jobject name) @@ -2335,6 +2351,26 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_constructor) return result; } +extern "C" Q_DECL_EXPORT jobject JNICALL +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_constructorByIndex) + (JNIEnv * env, jobject, jlong metaObjectPointer, jint index) +{ + jobject result = nullptr; + QTJAMBI_TRY{ + if(metaObjectPointer){ + env->EnsureLocalCapacity(100); + const QMetaObject *metaObject = reinterpret_cast(metaObjectPointer); + QMetaMethod method = metaObject->constructor(index); + if(method.isValid() && method.methodType()==QMetaMethod::Constructor){ + result = qtjambi_cast(env, method); + } + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} + extern "C" Q_DECL_EXPORT jint JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_constructorCount) (JNIEnv * env, jobject, jlong metaObjectPointer) @@ -2391,6 +2427,23 @@ QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_enumerator) return result; } +extern "C" Q_DECL_EXPORT jobject JNICALL +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_enumeratorByIndex) + (JNIEnv * env, jclass, jlong metaObjectPointer, jint index) +{ + jobject result = nullptr; + QTJAMBI_TRY{ + if(metaObjectPointer){ + const QMetaObject *metaObject = reinterpret_cast(metaObjectPointer); + QMetaEnum enumerator = metaObject->enumerator(index); + result = qtjambi_cast(env, enumerator); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} + extern "C" Q_DECL_EXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_core_QMetaObject_connectSlotsByName) (JNIEnv * env, jclass, QtJambiNativeID native_id) diff --git a/src/cpp/qtjambi_dbus/QDBusVariantReply.cpp b/src/cpp/qtjambi_dbus/QDBusVariantReply.cpp index b4f37377..670c69bd 100644 --- a/src/cpp/qtjambi_dbus/QDBusVariantReply.cpp +++ b/src/cpp/qtjambi_dbus/QDBusVariantReply.cpp @@ -394,6 +394,12 @@ extern "C" Q_DECL_EXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_dbus_QD || metaTypeId==qMetaTypeId()){ JavaException::raiseIllegalArgumentException(__jni_env, qPrintable(QString("Unable to marhall/unmarshall type %1.").arg(qtjambi_class_name(__jni_env, classType))) QTJAMBI_STACKTRACEINFO ); }else{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if(!QMetaType(metaType).iface()->defaultCtr + || !QMetaType(metaType).iface()->copyCtr){ + JavaException::raiseRuntimeException(__jni_env, qPrintable(QString("Meta type %1 does not provide default and copy constructor.").arg(QLatin1String(metaType.name()))) QTJAMBI_STACKTRACEINFO ); + } +#endif JObjectWrapper _marshallFunction(__jni_env, marshallFunction); mf = qtjambi_function_pointer<16,void(QDBusArgument &, const void *)>([metaTypeId,_marshallFunction](QDBusArgument &arg, const void *t) { if(JNIEnv* env = qtjambi_current_environment()){ @@ -498,6 +504,11 @@ extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_dbus #if QT_VERSION < QT_VERSION_CHECK(6,0,0) QVariant variant(metaType.id(), nullptr); #else +#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!QMetaType(metaType).iface()->copyCtr || !QMetaType(metaType).iface()->defaultCtr){ + JavaException::raiseUnsupportedOperationException(__jni_env, qPrintable(QString("Unable to extract value of type %1 from QDBusArgument.").arg(QLatin1String(metaType.name()))) QTJAMBI_STACKTRACEINFO ); + } +#endif QVariant variant(metaType, nullptr); #endif if(QDBusMetaType::demarshall(*arg, metaType diff --git a/src/cpp/qtjambi_httpserver/qtjambi_httpserver.cpp b/src/cpp/qtjambi_httpserver/qtjambi_httpserver.cpp index ba3c156b..7a1390b9 100644 --- a/src/cpp/qtjambi_httpserver/qtjambi_httpserver.cpp +++ b/src/cpp/qtjambi_httpserver/qtjambi_httpserver.cpp @@ -9,7 +9,8 @@ #include struct HttpServer : QAbstractHttpServer{ - inline void afterRequestImpl(QHttpServer::AfterRequestHandler afterRequestHandler) + inline void afterRequestImpl(std::function afterRequestHandler) { QHttpServerPrivate* d = reinterpret_cast(QObjectPrivate::get(this)); d->afterRequestHandlers.push_back(std::move(afterRequestHandler)); @@ -34,7 +35,7 @@ struct HttpServerRouterRule : QHttpServerRouterRule{ bool hasValidMethods() const{ return QHttpServerRouterRule::hasValidMethods(); } bool createPathRegexp(std::initializer_list metaTypes, - const QHash &converters){ + const QHash &converters){ return QHttpServerRouterRule::createPathRegexp(metaTypes, converters); } }; diff --git a/src/cpp/qtjambi_qml/qmlregistry.cpp b/src/cpp/qtjambi_qml/qmlregistry.cpp index d304c9ea..0744813d 100644 --- a/src/cpp/qtjambi_qml/qmlregistry.cpp +++ b/src/cpp/qtjambi_qml/qmlregistry.cpp @@ -1425,6 +1425,24 @@ extern "C" Q_DECL_EXPORT jint JNICALL Java_io_qt_qml_QtQml_qmlRegisterType__Lio_ return _result; } +/* + * Class: io_qt_qml_QtQml + * Method: qmlTypeId + * Signature: (Ljava/lang/String;IILjava/lang/String;)I + */ +extern "C" Q_DECL_EXPORT jint JNICALL Java_io_qt_qml_QtQml_qmlTypeId__Ljava_lang_String_2IILjava_lang_String_2 + (JNIEnv * env, jclass, jstring uri, jint versionMajor, jint versionMinor, jstring qmlName){ + env->EnsureLocalCapacity(300); + jint _result{-1}; + QTJAMBI_TRY{ + QString _qmlName = qtjambi_to_qstring(env, qmlName); + _result = qmlTypeId(qPrintable(qtjambi_to_qstring(env, uri)), int(versionMajor), int(versionMinor), _qmlName.isEmpty() ? nullptr : qPrintable(_qmlName)); + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return _result; +} + /* * Class: io_qt_qml_QtQml * Method: qmlProtectModule @@ -1888,3 +1906,230 @@ extern "C" Q_DECL_EXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QQm #endif } +// QQmlEngine::singletonInstance(int) +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QQmlEngine_singletonInstance__JI) +(JNIEnv *__jni_env, + jclass, + QtJambiNativeID __this_nativeId, jint qmlTypeId) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QQmlEngine::singletonInstance(int)") + jobject result{nullptr}; + QTJAMBI_TRY { + QQmlEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(__jni_env, __qt_this); + QJSValue value = __qt_this->singletonInstance(qmlTypeId); + result = qtjambi_cast(__jni_env, value); + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(__jni_env); + }QTJAMBI_TRY_END + return result; +} + +// qjsEngine +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QtQml_qjsEngine) +(JNIEnv *__jni_env, + jclass, + QtJambiNativeID __object_nativeId) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "qjsEngine") + jobject result{nullptr}; + QTJAMBI_TRY { + QObject *object = qtjambi_object_from_nativeId(__object_nativeId); + result = qtjambi_cast(__jni_env, qjsEngine(object)); + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(__jni_env); + }QTJAMBI_TRY_END + return result; +} + +#if QT_VERSION >= QT_VERSION_CHECK(6,3,0) +using ConvertVariant = bool(QJSEngine::*)(const QVariant &value, QMetaType metaType, void *ptr); +template <> +constexpr ConvertVariant qjsvalue_cast(const QJSValue &) +{ + return &QJSEngine::convertVariant; +} +// QJSEngine::fromVariant +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QJSEngine_fromVariant) +(JNIEnv *env, + jclass, + QtJambiNativeID __this_nativeId, jobject jVariant, QtJambiNativeID metaTypeId) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QJSEngine::fromVariant") + jobject result{nullptr}; + QTJAMBI_TRY { + QJSEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(env, __qt_this); + QVariant value = qtjambi_to_qvariant(env, jVariant); + QMetaType targetType = qtjambi_object_from_nativeId_deref(env, metaTypeId); + if (value.metaType()==targetType){ + result = jVariant; + }else{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!targetType.iface()->defaultCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing default constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } + if(!targetType.iface()->copyCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing copy constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } +#endif + QVariant t(targetType, nullptr); + ConvertVariant convertVariant = qjsvalue_cast(QJSValue{}); + if ((__qt_this->*convertVariant)(value, targetType, t.data())){ + result = qtjambi_from_qvariant(env, t); + }else{ + QMetaType::convert(value.metaType(), value.constData(), targetType, t.data()); + result = qtjambi_from_qvariant(env, t); + } + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} +#endif + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +using ConvertV2 = bool (*)(const QJSValue &value, QMetaType metaType, void *ptr); +template <> +constexpr ConvertV2 qjsvalue_cast(const QJSValue &) +{ + return &QJSEngine::convertV2; +} +// QJSEngine::fromScriptValue +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QJSEngine_fromScriptValue) +(JNIEnv *env, + jclass, + QtJambiNativeID __this_nativeId, QtJambiNativeID jmanaged, QtJambiNativeID metaTypeId) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QJSEngine::fromScriptValue") + jobject result{nullptr}; + QTJAMBI_TRY { + QJSEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(env, __qt_this); + const QJSValue& value = qtjambi_object_from_nativeId_deref(env, jmanaged); + QMetaType targetType = qtjambi_object_from_nativeId_deref(env, metaTypeId); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!targetType.iface()->defaultCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing default constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } + if(!targetType.iface()->copyCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing copy constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } +#endif + ConvertV2 convertV2 = qjsvalue_cast(QJSValue{}); + QVariant t(targetType, nullptr); + if (convertV2(value, targetType, t.data())){ + result = qtjambi_from_qvariant(env, t); + }else if (value.isVariant()){ + t = value.toVariant(); + t.convert(targetType); + result = qtjambi_from_qvariant(env, t); + }else{ + result = qtjambi_from_qvariant(env, QVariant(targetType, nullptr)); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} + +using Create = QJSValue(QJSEngine::*)(QMetaType type, const void *ptr); +template <> +constexpr Create qjsvalue_cast(const QJSValue &) +{ + return &QJSEngine::create; +} +// QJSEngine::toScriptValue +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QJSEngine_toScriptValue) +(JNIEnv *env, + jclass, + QtJambiNativeID __this_nativeId, jobject object) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QJSEngine::toScriptValue") + jobject result{nullptr}; + QTJAMBI_TRY { + QJSEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(env, __qt_this); + QVariant variant = qtjambi_to_qvariant(env, object); + Create create = qjsvalue_cast(QJSValue{}); + QJSValue jsval = (__qt_this->*create)(variant.metaType(), variant.data()); + result = qtjambi_cast(env, jsval); + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} +#endif + +#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) +using ConvertManaged = bool(*)(const QJSManagedValue &value, QMetaType type, void *ptr); +template <> +constexpr ConvertManaged qjsvalue_cast(const QJSValue &) +{ + return &QJSEngine::convertManaged; +} +// QJSEngine::fromManagedValue +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QJSEngine_fromManagedValue) +(JNIEnv *env, + jclass, + QtJambiNativeID __this_nativeId, QtJambiNativeID jmanaged, QtJambiNativeID metaTypeId) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QJSEngine::fromManagedValue") + jobject result{nullptr}; + QTJAMBI_TRY { + QJSEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(env, __qt_this); + const QJSManagedValue& value = qtjambi_object_from_nativeId_deref(env, jmanaged); + QMetaType targetType = qtjambi_object_from_nativeId_deref(env, metaTypeId); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 4, 0) + if(!targetType.iface()->defaultCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing default constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } + if(!targetType.iface()->copyCtr){ + JavaException::raiseRuntimeException(env, qPrintable(QString("Unable to convert to meta type %1 due to missing copy constructor.").arg(QLatin1String(targetType.name()))) QTJAMBI_STACKTRACEINFO ); + } +#endif + ConvertManaged convertManaged = qjsvalue_cast(QJSValue{}); + QVariant t(targetType, nullptr); + if (convertManaged(value, targetType, t.data())){ + result = qtjambi_from_qvariant(env, t); + }else{ + t = value.toVariant(); + t.convert(targetType); + result = qtjambi_from_qvariant(env, t); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} + +using CreateManaged = QJSManagedValue(QJSEngine::*)(QMetaType type, const void *ptr); +template <> +constexpr CreateManaged qjsvalue_cast(const QJSValue &) +{ + return &QJSEngine::createManaged; +} +// QJSEngine::toManagedValue +extern "C" Q_DECL_EXPORT jobject JNICALL QTJAMBI_FUNCTION_PREFIX(Java_io_qt_qml_QJSEngine_toManagedValue) +(JNIEnv *env, + jclass, + QtJambiNativeID __this_nativeId, jobject object) +{ + QTJAMBI_DEBUG_METHOD_PRINT("native", "QJSEngine::toManagedValue") + jobject result{nullptr}; + QTJAMBI_TRY { + QJSEngine *__qt_this = qtjambi_object_from_nativeId(__this_nativeId); + qtjambi_check_resource(env, __qt_this); + QVariant variant = qtjambi_to_qvariant(env, object); + CreateManaged createManaged = qjsvalue_cast(QJSManagedValue{}); + QJSManagedValue jsval = (__qt_this->*createManaged)(variant.metaType(), variant.data()); + result = qtjambi_cast(env, jsval); + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return result; +} +#endif + diff --git a/src/cpp/qtjambi_quick/qtjambi_quick_hashes.h b/src/cpp/qtjambi_quick/qtjambi_quick_hashes.h index a91448f1..a72ec678 100644 --- a/src/cpp/qtjambi_quick/qtjambi_quick_hashes.h +++ b/src/cpp/qtjambi_quick/qtjambi_quick_hashes.h @@ -3,20 +3,229 @@ #include #include +#include +#include +#include +#include + +struct RenderState{ + QSGMaterialShader::RenderState::DirtyStates m_dirty; + const void *m_data; +}; + +inline hash_type qHash(const QSGMaterialShader::RenderState &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.dirtyStates()); + hashCode = hashCode * 31 + qHash(quintptr(reinterpret_cast(value).m_data)); + return hashCode; +} +inline bool operator==(const QSGMaterialShader::RenderState &value1, const QSGMaterialShader::RenderState &value2) +{ + return value1.dirtyStates()==value2.dirtyStates() + && reinterpret_cast(value1).m_data==reinterpret_cast(value2).m_data; +} + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#include + +inline hash_type qHash(const QSGMaterialRhiShader::RenderState &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.dirtyStates()); + hashCode = hashCode * 31 + qHash(quintptr(reinterpret_cast(value).m_data)); + return hashCode; +} +inline bool operator==(const QSGMaterialRhiShader::RenderState &value1, const QSGMaterialRhiShader::RenderState &value2) +{ + return value1.dirtyStates()==value2.dirtyStates() + && reinterpret_cast(value1).m_data==reinterpret_cast(value2).m_data; +} + +inline hash_type qHash(const QSGMaterialRhiShader::GraphicsPipelineState &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.blendEnable); + hashCode = hashCode * 31 + qHash(value.srcColor); + hashCode = hashCode * 31 + qHash(value.dstColor); + hashCode = hashCode * 31 + qHash(value.colorWrite); + hashCode = hashCode * 31 + qHash(value.blendConstant); + hashCode = hashCode * 31 + qHash(value.cullMode); + return hashCode; +} +inline bool operator==(const QSGMaterialRhiShader::GraphicsPipelineState &value1, const QSGMaterialRhiShader::GraphicsPipelineState &value2) +{ + return value1.blendEnable==value2.blendEnable + && value1.srcColor==value2.srcColor + && value1.dstColor==value2.dstColor + && value1.colorWrite==value2.colorWrite + && value1.blendConstant==value2.blendConstant + && value1.cullMode==value2.cullMode; +} +#else + +inline hash_type qHash(const QSGMaterialShader::GraphicsPipelineState &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.blendEnable); + hashCode = hashCode * 31 + qHash(value.srcColor); + hashCode = hashCode * 31 + qHash(value.dstColor); + hashCode = hashCode * 31 + qHash(value.colorWrite); + hashCode = hashCode * 31 + qHash(value.blendConstant); + hashCode = hashCode * 31 + qHash(value.cullMode); +#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0) + hashCode = hashCode * 31 + qHash(value.polygonMode); +#endif + return hashCode; +} +inline bool operator==(const QSGMaterialShader::GraphicsPipelineState &value1, const QSGMaterialShader::GraphicsPipelineState &value2) +{ + return value1.blendEnable==value2.blendEnable + && value1.srcColor==value2.srcColor + && value1.dstColor==value2.dstColor + && value1.colorWrite==value2.colorWrite + && value1.blendConstant==value2.blendConstant +#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0) + && value1.polygonMode==value2.polygonMode +#endif + && value1.cullMode==value2.cullMode; +} + +#endif + +inline hash_type qHash(const QSGGeometry::ColoredPoint2D &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.x); + hashCode = hashCode * 31 + qHash(value.y); + hashCode = hashCode * 31 + qHash(value.r); + hashCode = hashCode * 31 + qHash(value.g); + hashCode = hashCode * 31 + qHash(value.b); + hashCode = hashCode * 31 + qHash(value.a); + return hashCode; +} +inline bool operator==(const QSGGeometry::ColoredPoint2D &value1, const QSGGeometry::ColoredPoint2D &value2) +{ + return value1.x==value2.x + && value1.y==value2.y + && value1.r==value2.r + && value1.g==value2.g + && value1.b==value2.b + && value1.a==value2.a; +} + +inline hash_type qHash(const QSGGeometry::TexturedPoint2D &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.x); + hashCode = hashCode * 31 + qHash(value.y); + hashCode = hashCode * 31 + qHash(value.tx); + hashCode = hashCode * 31 + qHash(value.ty); + return hashCode; +} +inline bool operator==(const QSGGeometry::TexturedPoint2D &value1, const QSGGeometry::TexturedPoint2D &value2) +{ + return value1.x==value2.x + && value1.y==value2.y + && value1.tx==value2.tx + && value1.ty==value2.ty; +} + +inline hash_type qHash(const QSGGeometry::Point2D &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.x); + hashCode = hashCode * 31 + qHash(value.y); + return hashCode; +} +inline bool operator==(const QSGGeometry::Point2D &value1, const QSGGeometry::Point2D &value2) +{ + return value1.x==value2.x + && value1.y==value2.y; +} + +inline hash_type qHash(const QSGGeometry::Attribute &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.position); + hashCode = hashCode * 31 + qHash(value.tupleSize); + hashCode = hashCode * 31 + qHash(value.type); + hashCode = hashCode * 31 + qHash(value.isVertexCoordinate); + hashCode = hashCode * 31 + qHash(int(value.attributeType)); + return hashCode; +} +inline bool operator==(const QSGGeometry::Attribute &value1, const QSGGeometry::Attribute &value2) +{ + return value1.position==value2.position + && value1.tupleSize==value2.tupleSize + && value1.type==value2.type + && value1.isVertexCoordinate==value2.isVertexCoordinate + && value1.attributeType==value2.attributeType; +} + +inline hash_type qHash(const QSGGeometry::AttributeSet &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.stride); + hashCode = hashCode * 31 + qHash(value.count); + for(int i=0; i= QT_VERSION_CHECK(5, 14, 0) +#include +inline hash_type qHash(const QQuickWindow::GraphicsStateInfo &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(value.currentFrameSlot); + hashCode = hashCode * 31 + qHash(value.framesInFlight); + return hashCode; +} +inline bool operator==(const QQuickWindow::GraphicsStateInfo &value1, const QQuickWindow::GraphicsStateInfo &value2) +{ + return value1.currentFrameSlot==value2.currentFrameSlot && value1.framesInFlight==value2.framesInFlight; +} +#endif + #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + +#include +#include + +inline hash_type qHash(const QQuickGraphicsDevice &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(*reinterpret_cast(&value)); + return hashCode; +} +inline bool operator==(const QQuickGraphicsDevice &value1, const QQuickGraphicsDevice &value2) +{ + return *reinterpret_cast(&value1)==*reinterpret_cast(&value2); +} +inline hash_type qHash(const QQuickGraphicsConfiguration &value, hash_type hashCode = 0) +{ + hashCode = hashCode * 31 + qHash(*reinterpret_cast(&value)); + return hashCode; +} +inline bool operator==(const QQuickGraphicsConfiguration &value1, const QQuickGraphicsConfiguration &value2) +{ + return *reinterpret_cast(&value1)==*reinterpret_cast(&value2); +} + #include #ifndef QT_JAMBI_RUN #include -#endif - -inline hash_type qHash(const QQuickRenderTarget &value) +inline hash_type qHash(const QQuickRenderTarget &value, hash_type hashCode = 0) { const QQuickRenderTargetPrivate* p = QQuickRenderTargetPrivate::get(&value); if(!p){ - return 0; + return hashCode; } - hash_type hashCode = qHash(int(p->type)); + hashCode = hashCode * 31 + qHash(int(p->type)); hashCode = hashCode * 31 + qHash(p->pixelSize); hashCode = hashCode * 31 + qHash(p->sampleCount); switch(p->type){ @@ -32,6 +241,10 @@ inline hash_type qHash(const QQuickRenderTarget &value) } return hashCode; } +#else +hash_type qHash(const QQuickRenderTarget &value, hash_type hashCode = 0); +#endif + #endif #endif // QTJAMBI_QUICK_HASHES_H diff --git a/src/cpp/qtjambi_webenginecore/qtjambi_qwebenginecore_hashes.h b/src/cpp/qtjambi_webenginecore/qtjambi_qwebenginecore_hashes.h index 1a48909a..224e1656 100644 --- a/src/cpp/qtjambi_webenginecore/qtjambi_qwebenginecore_hashes.h +++ b/src/cpp/qtjambi_webenginecore/qtjambi_qwebenginecore_hashes.h @@ -101,7 +101,7 @@ namespace QtWebEngineCore{ class FileSystemAccessPermissionRequestManagerQt{ public: static hash_type hash(const QWebEngineFileSystemAccessRequest& value, hash_type seed){ - return qHash(quintptr(value.d_ptr.data()), seed); + return qHash(quintptr(&*value.d_ptr), seed); } }; } diff --git a/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.cpp b/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.cpp new file mode 100644 index 00000000..617e99d5 --- /dev/null +++ b/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.cpp @@ -0,0 +1,56 @@ + +#include +#include +#include +#include +#include + +#include +#include + +class QQuickWebEngineViewPrivate{ +public: + static QWebEngineSettings* getWebEngineSettings(QQuickWebEngineSettings* settings){ + return settings->d_ptr.data(); + } + + static QWebEngineScriptCollection* getWebEngineScriptCollection(QQuickWebEngineScriptCollection* collection){ + return collection->d.data(); + } +}; + +extern "C" Q_DECL_EXPORT jobject JNICALL +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_webengine_quick_QtWebEngineQuick_toWebEngineSettings) +(JNIEnv *env, jclass, jobject object) +{ + jobject __java_return_value{0}; + QTJAMBI_TRY { + QObject *_object = qtjambi_cast(env, object); + if(QQuickWebEngineSettings* settings = qobject_cast(_object)){ + QWebEngineSettings* wSettings = QQuickWebEngineViewPrivate::getWebEngineSettings(settings); + __java_return_value = qtjambi_from_object(env, wSettings, false, true); + qtjambi_register_dependent_object(env, __java_return_value, object); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return __java_return_value; +} + +extern "C" Q_DECL_EXPORT jobject JNICALL +QTJAMBI_FUNCTION_PREFIX(Java_io_qt_webengine_quick_QtWebEngineQuick_toWebEngineScriptCollection) +(JNIEnv *env, jclass, jobject object) +{ + jobject __java_return_value{0}; + QTJAMBI_TRY { + QObject *_object = qtjambi_cast(env, object); + if(QQuickWebEngineScriptCollection* collection = qobject_cast(_object)){ + QWebEngineScriptCollection* wCollection = QQuickWebEngineViewPrivate::getWebEngineScriptCollection(collection); + __java_return_value = qtjambi_from_object(env, wCollection, false, true); + qtjambi_register_dependent_object(env, __java_return_value, object); + } + }QTJAMBI_CATCH(const JavaException& exn){ + exn.raiseInJava(env); + }QTJAMBI_TRY_END + return __java_return_value; +} diff --git a/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.pro b/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.pro index 7c7abc1b..7bcb3ae4 100644 --- a/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.pro +++ b/src/cpp/qtjambi_webenginequick/qtjambi_webenginequick.pro @@ -11,5 +11,8 @@ exists($$QTJAMBI_BUILDDIR): include($$QTJAMBI_BUILDDIR/generator/out/cpp/$$QTJAM # To be able to remove this we need to make generator better/smarter about #include directives # and it might not include these files at all. -QT += core qml quick webenginecore webenginequick +QT += core qml quick webenginecore webenginequick core-private webenginequick-private + +SOURCES += \ + qtjambi_webenginequick.cpp diff --git a/src/java/ant-qtjambi/io/qt/tools/ant/FindCompiler.java b/src/java/ant-qtjambi/io/qt/tools/ant/FindCompiler.java index 13fad016..e7178977 100644 --- a/src/java/ant-qtjambi/io/qt/tools/ant/FindCompiler.java +++ b/src/java/ant-qtjambi/io/qt/tools/ant/FindCompiler.java @@ -74,6 +74,8 @@ public enum Compiler { MSVC2019_64("msvc2019x64"), MSVC2022("msvc2022"), MSVC2022_64("msvc2022x64"), + MSVC20XX("msvc20XX"), + MSVC20XX_64("msvc20XXx64"), MinGW("mingw"), MinGW_W64("mingw-w64"), OldGCC("gcc3.3"), @@ -112,6 +114,8 @@ public static Compiler resolve(String name) { if(name.equals("msvc2019x64")) return MSVC2019_64; if(name.equals("msvc2022")) return MSVC2022; if(name.equals("msvc2022x64")) return MSVC2022_64; + if(name.equals("msvc20XX")) return MSVC20XX; + if(name.equals("msvc20XXx64")) return MSVC20XX_64; if(name.equals("mingw")) return MinGW; if(name.equals("mingw-w64")) return MinGW_W64; if(name.equals("gcc3.3")) return OldGCC; @@ -120,67 +124,6 @@ public static Compiler resolve(String name) { if(name.equals("clang")) return CLANG; return Other; } - - public boolean is64Only() { - return is64Only(name); - } - public static boolean is64Only(String name) { - Compiler compiler = resolve(name); - if(compiler == MSVC2005_64) - return true; - if(compiler == MSVC2008_64) - return true; - if(compiler == MSVC2010_64) - return true; - if(compiler == MSVC2012_64) - return true; - if(compiler == MSVC2013_64) - return true; - if(compiler == MSVC2015_64) - return true; - if(compiler == MSVC2017_64) - return true; - return false; - } - - public boolean isCompiler(Compiler compiler) { - return isCompiler(name, compiler); - } - public static boolean isCompiler(String name, Compiler ...compilerA) { - Compiler thisCompiler = resolve(name); - for(Compiler c : compilerA) { - if(thisCompiler == c) - return true; - } - return false; - } - - public boolean isMsvcKind() { - Compiler compiler = resolve(name); - switch(compiler) { - case MSVC1998: - case MSVC2002: - case MSVC2003: - case MSVC2005: - case MSVC2005_64: - case MSVC2008: - case MSVC2008_64: - case MSVC2010: - case MSVC2010_64: - case MSVC2012: - case MSVC2012_64: - case MSVC2013: - case MSVC2013_64: - case MSVC2015: - case MSVC2015_64: - case MSVC2017: - case MSVC2017_64: - return true; - default: - break; - } - return false; - } } public FindCompiler(PropertyHelper propertyHelper, Task task) { @@ -585,7 +528,9 @@ private Compiler testForVisualStudio() { return Compiler.MSVC2022_64; return Compiler.MSVC2022; } - throw new BuildException("Failed to detect Visual Studio version\n \"" + stderr + "\""); + if(stderr.contains("x64")) + return Compiler.MSVC20XX_64; + return Compiler.MSVC20XX; } } catch(InterruptedException ex) { if(verbose) diff --git a/src/java/ant-qtjambi/io/qt/tools/ant/InitializeBuildTask.java b/src/java/ant-qtjambi/io/qt/tools/ant/InitializeBuildTask.java index 910f6c38..72869a6a 100644 --- a/src/java/ant-qtjambi/io/qt/tools/ant/InitializeBuildTask.java +++ b/src/java/ant-qtjambi/io/qt/tools/ant/InitializeBuildTask.java @@ -672,6 +672,7 @@ public void executeInitialize() throws BuildException { privateModules.add("QtGui"); privateModules.add("QtDesigner"); privateModules.add("QtRemoteObjects"); + privateModules.add("QtQuick"); { String pm = AntUtil.getPropertyAsString(propertyHelper, Constants.PRIVATE_MODULES); if(pm!=null) diff --git a/src/java/autotest/io/qt/autotests/ApplicationInitializer.java b/src/java/autotest/io/qt/autotests/ApplicationInitializer.java index 2ac48fb5..be2cab59 100644 --- a/src/java/autotest/io/qt/autotests/ApplicationInitializer.java +++ b/src/java/autotest/io/qt/autotests/ApplicationInitializer.java @@ -238,7 +238,7 @@ static void testDeployerApp(String applicationName, String...modules) throws Int boolean java8 = jvmVersion.startsWith("1.") || jvmVersion.startsWith("8.") || jvmVersion.startsWith("7."); String jambidir = System.getProperty("user.dir"); Assume.assumeTrue(jambidir!=null); - final File testsDir = new File(new File(new File(jambidir, version), "build"), "tests"); + final File testsDir = new File(new File(new File(new File(jambidir, version), "build"), QtJambiInternal.osArchName()), "tests"); Assume.assumeTrue(testsDir.getAbsolutePath()+" not a directory", testsDir.isDirectory()); final File targetDir = new File(testsDir, "tmp_"+QtJambiInternal.processName()); targetDir.mkdirs(); @@ -313,10 +313,10 @@ static void testDeployerApp(String applicationName, String...modules) throws Int final QProcess process = new QProcess(); try { if(java8) { - classPath = macosPrefix+"../java"; - classPath += File.pathSeparator+macosPrefix+"../../../deployment/qtjambi-"+version+".jar"; + classPath = macosPrefix+"../qtjambi-autotests-"+version+".jar"; + classPath += File.pathSeparator+macosPrefix+"../../../../deployment/qtjambi-"+version+".jar"; for(String mod : modules) { - classPath += File.pathSeparator+macosPrefix+"../../../deployment/qtjambi-"+mod+"-"+version+".jar"; + classPath += File.pathSeparator+macosPrefix+"../../../../deployment/qtjambi-"+mod+"-"+version+".jar"; if("sql".equals(mod) && !System.getProperty("qtjambi.deployer.test.jdbc", "").isEmpty()) { String jdbcPath = targetDir.toPath().toAbsolutePath().relativize(new File(System.getProperty("qtjambi.deployer.test.jdbc")).toPath().toAbsolutePath()).toString(); classPath += File.pathSeparator+macosPrefix+jdbcPath; @@ -341,10 +341,10 @@ static void testDeployerApp(String applicationName, String...modules) throws Int "-Dio.qt.verbose-loading="+System.getProperty("io.qt.verbose-loading", "false") }); }else { - classPath = macosPrefix+"../java"; - modulePath = "../"+macosPrefix+"../../deployment/qtjambi-"+version+".jar"; + classPath = macosPrefix+"../qtjambi-autotests-"+version+".jar"; + modulePath = "../"+macosPrefix+"../../../deployment/qtjambi-"+version+".jar"; for(String mod : modules) { - modulePath += File.pathSeparator+macosPrefix+"../../../deployment/qtjambi-"+mod+"-"+version+".jar"; + modulePath += File.pathSeparator+macosPrefix+"../../../../deployment/qtjambi-"+mod+"-"+version+".jar"; if("sql".equals(mod) && !System.getProperty("qtjambi.deployer.test.jdbc", "").isEmpty()) { String jdbcPath = targetDir.toPath().toAbsolutePath().relativize(new File(System.getProperty("qtjambi.deployer.test.jdbc")).toPath().toAbsolutePath()).toString(); classPath += File.pathSeparator+macosPrefix+jdbcPath; diff --git a/src/java/autotest/io/qt/autotests/Content.txt b/src/java/autotest/io/qt/autotests/Content.txt new file mode 100644 index 00000000..2befb49c --- /dev/null +++ b/src/java/autotest/io/qt/autotests/Content.txt @@ -0,0 +1,1800 @@ +0: | | | | | | | | | +1: | | | | | | | | | +2: | | | | | | | | | +3: | | | | | | | | | +4: | | | | | | | | | +5: | | | | | | | | | +6: | | | | | | | | | +7: | | | | | | | | | +8: | | | | | | | | | +9: | | | | | | | | | +10: | | | | | | | | | +11: | | | | | | | | | +12: | | | | | | | | | +13: | | | | | | | | | +14: | | | | | | | | | +15: | | | | | | | | | +16: | | | | | | | | | +17: | | | | | | | | | +18: | | | | | | | | | +19: | | | | | | | | | +20: | | | | | | | | | +21: | | | | | | | | | +22: | | | | | | | | | +23: | | | | | | | | | +24: | | | | | | | | | +25: | | | | | | | | | +26: | | | | | | | | | +27: | | | | | | | | | +28: | | | | | | | | | +29: | | | | | | | | | +30: | | | | | | | | | +31: | | | | | | | | | +32: | | | | | | | | | +33: | | | | | | | | | +34: | | | | | | | | | +35: | | | | | | | | | +36: | | | | | | | | | +37: | | | | | | | | | +38: | | | | | | | | | +39: | | | | | | | | | +40: | | | | | | | | | +41: | | | | | | | | | +42: | | | | | | | | | +43: | | | | | | | | | +44: | | | | | | | | | +45: | | | | | | | | | +46: | | | | | | | | | +47: | | | | | | | | | +48: | | | | | | | | | +49: | | | | | | | | | +50: | | | | | | | | | +51: | | | | | | | | | +52: | | | | | | | | | +53: | | | | | | | | | +54: | | | | | | | | | +55: | | | | | | | | | +56: | | | | | | | | | +57: | | | | | | | | | +58: | | | | | | | | | +59: | | | | | | | | | +60: | | | | | | | | | +61: | | | | | | | | | +62: | | | | | | | | | +63: | | | | | | | | | +64: | | | | | | | | | +65: | | | | | | | | | +66: | | | | | | | | | +67: | | | | | | | | | +68: | | | | | | | | | +69: | | | | | | | | | +70: | | | | | | | | | +71: | | | | | | | | | +72: | | | | | | | | | +73: | | | | | | | | | +74: | | | | | | | | | +75: | | | | | | | | | +76: | | | | | | | | | +77: | | | | | | | | | +78: | | | | | | | | | +79: | | | | | | | | | +80: | | | | | | | | | +81: | | | | | | | | | +82: | | | | | | | | | +83: | | | | | | | | | +84: | | | | | | | | | +85: | | | | | | | | | +86: | | | | | | | | | +87: | | | | | | | | | +88: | | | | | | | | | +89: | | | | | | | | | +90: | | | | | | | | | +91: | | | | | | | | | +92: | | | | | | | | | +93: | | | | | | | | | +94: | | | | | | | | | +95: | | | | | | | | | +96: | | | | | | | | | +97: | | | | | | | | | +98: | | | | | | | | | +99: | | | | | | | | | +100: | | | | | | | | | +101: | | | | | | | | | +102: | | | | | | | | | +103: | | | | | | | | | +104: | | | | | | | | | +105: | | | | | | | | | +106: | | | | | | | | | +107: | | | | | | | | | +108: | | | | | | | | | +109: | | | | | | | | | +110: | | | | | | | | | +111: | | | | | | | | | +112: | | | | | | | | | +113: | | | | | | | | | +114: | | | | | | | | | +115: | | | | | | | | | +116: | | | | | | | | | +117: | | | | | | | | | +118: | | | | | | | | | +119: | | | | | | | | | +120: | | | | | | | | | +121: | | | | | | | | | +122: | | | | | | | | | +123: | | | | | | | | | +124: | | | | | | | | | +125: | | | | | | | | | +126: | | | | | | | | | +127: | | | | | | | | | +128: | | | | | | | | | +129: | | | | | | | | | +130: | | | | | | | | | +131: | | | | | | | | | +132: | | | | | | | | | +133: | | | | | | | | | +134: | | | | | | | | | +135: | | | | | | | | | +136: | | | | | | | | | +137: | | | | | | | | | +138: | | | | | | | | | +139: | | | | | | | | | +140: | | | | | | | | | +141: | | | | | | | | | +142: | | | | | | | | | +143: | | | | | | | | | +144: | | | | | | | | | +145: | | | | | | | | | +146: | | | | | | | | | +147: | | | | | | | | | +148: | | | | | | | | | +149: | | | | | | | | | +150: | | | | | | | | | +151: | | | | | | | | | +152: | | | | | | | | | +153: | | | | | | | | | +154: | | | | | | | | | +155: | | | | | | | | | +156: | | | | | | | | | +157: | | | | | | | | | +158: | | | | | | | | | +159: | | | | | | | | | +160: | | | | | | | | | +161: | | | | | | | | | +162: | | | | | | | | | +163: | | | | | | | | | +164: | | | | | | | | | +165: | | | | | | | | | +166: | | | | | | | | | +167: | | | | | | | | | +168: | | | | | | | | | +169: | | | | | | | | | +170: | | | | | | | | | +171: | | | | | | | | | +172: | | | | | | | | | +173: | | | | | | | | | +174: | | | | | | | | | +175: | | | | | | | | | +176: | | | | | | | | | +177: | | | | | | | | | +178: | | | | | | | | | +179: | | | | | | | | | +180: | | | | | | | | | +181: | | | | | | | | | +182: | | | | | | | | | +183: | | | | | | | | | +184: | | | | | | | | | +185: | | | | | | | | | +186: | | | | | | | | | +187: | | | | | | | | | +188: | | | | | | | | | +189: | | | | | | | | | +190: | | | | | | | | | +191: | | | | | | | | | +192: | | | | | | | | | +193: | | | | | | | | | +194: | | | | | | | | | +195: | | | | | | | | | +196: | | | | | | | | | +197: | | | | | | | | | +198: | | | | | | | | | +199: | | | | | | | | | +200: | | | | | | | | | +201: | | | | | | | | | +202: | | | | | | | | | +203: | | | | | | | | | +204: | | | | | | | | | +205: | | | | | | | | | +206: | | | | | | | | | +207: | | | | | | | | | +208: | | | | | | | | | +209: | | | | | | | | | +210: | | | | | | | | | +211: | | | | | | | | | +212: | | | | | | | | | +213: | | | | | | | | | +214: | | | | | | | | | +215: | | | | | | | | | +216: | | | | | | | | | +217: | | | | | | | | | +218: | | | | | | | | | +219: | | | | | | | | | +220: | | | | | | | | | +221: | | | | | | | | | +222: | | | | | | | | | +223: | | | | | | | | | +224: | | | | | | | | | +225: | | | | | | | | | +226: | | | | | | | | | +227: | | | | | | | | | +228: | | | | | | | | | +229: | | | | | | | | | +230: | | | | | | | | | +231: | | | | | | | | | +232: | | | | | | | | | +233: | | | | | | | | | +234: | | | | | | | | | +235: | | | | | | | | | +236: | | | | | | | | | +237: | | | | | | | | | +238: | | | | | | | | | +239: | | | | | | | | | +240: | | | | | | | | | +241: | | | | | | | | | +242: | | | | | | | | | +243: | | | | | | | | | +244: | | | | | | | | | +245: | | | | | | | | | +246: | | | | | | | | | +247: | | | | | | | | | +248: | | | | | | | | | +249: | | | | | | | | | +250: | | | | | | | | | +251: | | | | | | | | | +252: | | | | | | | | | +253: | | | | | | | | | +254: | | | | | | | | | +255: | | | | | | | | | +256: | | | | | | | | | +257: | | | | | | | | | +258: | | | | | | | | | +259: | | | | | | | | | +260: | | | | | | | | | +261: | | | | | | | | | +262: | | | | | | | | | +263: | | | | | | | | | +264: | | | | | | | | | +265: | | | | | | | | | +266: | | | | | | | | | +267: | | | | | | | | | +268: | | | | | | | | | +269: | | | | | | | | | +270: | | | | | | | | | +271: | | | | | | | | | +272: | | | | | | | | | +273: | | | | | | | | | +274: | | | | | | | | | +275: | | | | | | | | | +276: | | | | | | | | | +277: | | | | | | | | | +278: | | | | | | | | | +279: | | | | | | | | | +280: | | | | | | | | | +281: | | | | | | | | | +282: | | | | | | | | | +283: | | | | | | | | | +284: | | | | | | | | | +285: | | | | | | | | | +286: | | | | | | | | | +287: | | | | | | | | | +288: | | | | | | | | | +289: | | | | | | | | | +290: | | | | | | | | | +291: | | | | | | | | | +292: | | | | | | | | | +293: | | | | | | | | | +294: | | | | | | | | | +295: | | | | | | | | | +296: | | | | | | | | | +297: | | | | | | | | | +298: | | | | | | | | | +299: | | | | | | | | | +300: | | | | | | | | | +301: | | | | | | | | | +302: | | | | | | | | | +303: | | | | | | | | | +304: | | | | | | | | | +305: | | | | | | | | | +306: | | | | | | | | | +307: | | | | | | | | | +308: | | | | | | | | | +309: | | | | | | | | | +310: | | | | | | | | | +311: | | | | | | | | | +312: | | | | | | | | | +313: | | | | | | | | | +314: | | | | | | | | | +315: | | | | | | | | | +316: | | | | | | | | | +317: | | | | | | | | | +318: | | | | | | | | | +319: | | | | | | | | | +320: | | | | | | | | | +321: | | | | | | | | | +322: | | | | | | | | | +323: | | | | | | | | | +324: | | | | | | | | | +325: | | | | | | | | | +326: | | | | | | | | | +327: | | | | | | | | | +328: | | | | | | | | | +329: | | | | | | | | | +330: | | | | | | | | | +331: | | | | | | | | | +332: | | | | | | | | | +333: | | | | | | | | | +334: | | | | | | | | | +335: | | | | | | | | | +336: | | | | | | | | | +337: | | | | | | | | | +338: | | | | | | | | | +339: | | | | | | | | | +340: | | | | | | | | | +341: | | | | | | | | | +342: | | | | | | | | | +343: | | | | | | | | | +344: | | | | | | | | | +345: | | | | | | | | | +346: | | | | | | | | | +347: | | | | | | | | | +348: | | | | | | | | | +349: | | | | | | | | | +350: | | | | | | | | | +351: | | | | | | | | | +352: | | | | | | | | | +353: | | | | | | | | | +354: | | | | | | | | | +355: | | | | | | | | | +356: | | | | | | | | | +357: | | | | | | | | | +358: | | | | | | | | | +359: | | | | | | | | | +360: | | | | | | | | | +361: | | | | | | | | | +362: | | | | | | | | | +363: | | | | | | | | | +364: | | | | | | | | | +365: | | | | | | | | | +366: | | | | | | | | | +367: | | | | | | | | | +368: | | | | | | | | | +369: | | | | | | | | | +370: | | | | | | | | | +371: | | | | | | | | | +372: | | | | | | | | | +373: | | | | | | | | | +374: | | | | | | | | | +375: | | | | | | | | | +376: | | | | | | | | | +377: | | | | | | | | | +378: | | | | | | | | | +379: | | | | | | | | | +380: | | | | | | | | | +381: | | | | | | | | | +382: | | | | | | | | | +383: | | | | | | | | | +384: | | | | | | | | | +385: | | | | | | | | | +386: | | | | | | | | | +387: | | | | | | | | | +388: | | | | | | | | | +389: | | | | | | | | | +390: | | | | | | | | | +391: | | | | | | | | | +392: | | | | | | | | | +393: | | | | | | | | | +394: | | | | | | | | | +395: | | | | | | | | | +396: | | | | | | | | | +397: | | | | | | | | | +398: | | | | | | | | | +399: | | | | | | | | | +400: | | | | | | | | | +401: | | | | | | | | | +402: | | | | | | | | | +403: | | | | | | | | | +404: | | | | | | | | | +405: | | | | | | | | | +406: | | | | | | | | | +407: | | | | | | | | | +408: | | | | | | | | | +409: | | | | | | | | | +410: | | | | | | | | | +411: | | | | | | | | | +412: | | | | | | | | | +413: | | | | | | | | | +414: | | | | | | | | | +415: | | | | | | | | | +416: | | | | | | | | | +417: | | | | | | | | | +418: | | | | | | | | | +419: | | | | | | | | | +420: | | | | | | | | | +421: | | | | | | | | | +422: | | | | | | | | | +423: | | | | | | | | | +424: | | | | | | | | | +425: | | | | | | | | | +426: | | | | | | | | | +427: | | | | | | | | | +428: | | | | | | | | | +429: | | | | | | | | | +430: | | | | | | | | | +431: | | | | | | | | | +432: | | | | | | | | | +433: | | | | | | | | | +434: | | | | | | | | | +435: | | | | | | | | | +436: | | | | | | | | | +437: | | | | | | | | | +438: | | | | | | | | | +439: | | | | | | | | | +440: | | | | | | | | | +441: | | | | | | | | | +442: | | | | | | | | | +443: | | | | | | | | | +444: | | | | | | | | | +445: | | | | | | | | | +446: | | | | | | | | | +447: | | | | | | | | | +448: | | | | | | | | | +449: | | | | | | | | | +450: | | | | | | | | | +451: | | | | | | | | | +452: | | | | | | | | | +453: | | | | | | | | | +454: | | | | | | | | | +455: | | | | | | | | | +456: | | | | | | | | | +457: | | | | | | | | | +458: | | | | | | | | | +459: | | | | | | | | | +460: | | | | | | | | | +461: | | | | | | | | | +462: | | | | | | | | | +463: | | | | | | | | | +464: | | | | | | | | | +465: | | | | | | | | | +466: | | | | | | | | | +467: | | | | | | | | | +468: | | | | | | | | | +469: | | | | | | | | | +470: | | | | | | | | | +471: | | | | | | | | | +472: | | | | | | | | | +473: | | | | | | | | | +474: | | | | | | | | | +475: | | | | | | | | | +476: | | | | | | | | | +477: | | | | | | | | | +478: | | | | | | | | | +479: | | | | | | | | | +480: | | | | | | | | | +481: | | | | | | | | | +482: | | | | | | | | | +483: | | | | | | | | | +484: | | | | | | | | | +485: | | | | | | | | | +486: | | | | | | | | | +487: | | | | | | | | | +488: | | | | | | | | | +489: | | | | | | | | | +490: | | | | | | | | | +491: | | | | | | | | | +492: | | | | | | | | | +493: | | | | | | | | | +494: | | | | | | | | | +495: | | | | | | | | | +496: | | | | | | | | | +497: | | | | | | | | | +498: | | | | | | | | | +499: | | | | | | | | | +500: | | | | | | | | | +501: | | | | | | | | | +502: | | | | | | | | | +503: | | | | | | | | | +504: | | | | | | | | | +505: | | | | | | | | | +506: | | | | | | | | | +507: | | | | | | | | | +508: | | | | | | | | | +509: | | | | | | | | | +510: | | | | | | | | | +511: | | | | | | | | | +512: | | | | | | | | | +513: | | | | | | | | | +514: | | | | | | | | | +515: | | | | | | | | | +516: | | | | | | | | | +517: | | | | | | | | | +518: | | | | | | | | | +519: | | | | | | | | | +520: | | | | | | | | | +521: | | | | | | | | | +522: | | | | | | | | | +523: | | | | | | | | | +524: | | | | | | | | | +525: | | | | | | | | | +526: | | | | | | | | | +527: | | | | | | | | | +528: | | | | | | | | | +529: | | | | | | | | | +530: | | | | | | | | | +531: | | | | | | | | | +532: | | | | | | | | | +533: | | | | | | | | | +534: | | | | | | | | | +535: | | | | | | | | | +536: | | | | | | | | | +537: | | | | | | | | | +538: | | | | | | | | | +539: | | | | | | | | | +540: | | | | | | | | | +541: | | | | | | | | | +542: | | | | | | | | | +543: | | | | | | | | | +544: | | | | | | | | | +545: | | | | | | | | | +546: | | | | | | | | | +547: | | | | | | | | | +548: | | | | | | | | | +549: | | | | | | | | | +550: | | | | | | | | | +551: | | | | | | | | | +552: | | | | | | | | | +553: | | | | | | | | | +554: | | | | | | | | | +555: | | | | | | | | | +556: | | | | | | | | | +557: | | | | | | | | | +558: | | | | | | | | | +559: | | | | | | | | | +560: | | | | | | | | | +561: | | | | | | | | | +562: | | | | | | | | | +563: | | | | | | | | | +564: | | | | | | | | | +565: | | | | | | | | | +566: | | | | | | | | | +567: | | | | | | | | | +568: | | | | | | | | | +569: | | | | | | | | | +570: | | | | | | | | | +571: | | | | | | | | | +572: | | | | | | | | | +573: | | | | | | | | | +574: | | | | | | | | | +575: | | | | | | | | | +576: | | | | | | | | | +577: | | | | | | | | | +578: | | | | | | | | | +579: | | | | | | | | | +580: | | | | | | | | | +581: | | | | | | | | | +582: | | | | | | | | | +583: | | | | | | | | | +584: | | | | | | | | | +585: | | | | | | | | | +586: | | | | | | | | | +587: | | | | | | | | | +588: | | | | | | | | | +589: | | | | | | | | | +590: | | | | | | | | | +591: | | | | | | | | | +592: | | | | | | | | | +593: | | | | | | | | | +594: | | | | | | | | | +595: | | | | | | | | | +596: | | | | | | | | | +597: | | | | | | | | | +598: | | | | | | | | | +599: | | | | | | | | | +600: | | | | | | | | | +601: | | | | | | | | | +602: | | | | | | | | | +603: | | | | | | | | | +604: | | | | | | | | | +605: | | | | | | | | | +606: | | | | | | | | | +607: | | | | | | | | | +608: | | | | | | | | | +609: | | | | | | | | | +610: | | | | | | | | | +611: | | | | | | | | | +612: | | | | | | | | | +613: | | | | | | | | | +614: | | | | | | | | | +615: | | | | | | | | | +616: | | | | | | | | | +617: | | | | | | | | | +618: | | | | | | | | | +619: | | | | | | | | | +620: | | | | | | | | | +621: | | | | | | | | | +622: | | | | | | | | | +623: | | | | | | | | | +624: | | | | | | | | | +625: | | | | | | | | | +626: | | | | | | | | | +627: | | | | | | | | | +628: | | | | | | | | | +629: | | | | | | | | | +630: | | | | | | | | | +631: | | | | | | | | | +632: | | | | | | | | | +633: | | | | | | | | | +634: | | | | | | | | | +635: | | | | | | | | | +636: | | | | | | | | | +637: | | | | | | | | | +638: | | | | | | | | | +639: | | | | | | | | | +640: | | | | | | | | | +641: | | | | | | | | | +642: | | | | | | | | | +643: | | | | | | | | | +644: | | | | | | | | | +645: | | | | | | | | | +646: | | | | | | | | | +647: | | | | | | | | | +648: | | | | | | | | | +649: | | | | | | | | | +650: | | | | | | | | | +651: | | | | | | | | | +652: | | | | | | | | | +653: | | | | | | | | | +654: | | | | | | | | | +655: | | | | | | | | | +656: | | | | | | | | | +657: | | | | | | | | | +658: | | | | | | | | | +659: | | | | | | | | | +660: | | | | | | | | | +661: | | | | | | | | | +662: | | | | | | | | | +663: | | | | | | | | | +664: | | | | | | | | | +665: | | | | | | | | | +666: | | | | | | | | | +667: | | | | | | | | | +668: | | | | | | | | | +669: | | | | | | | | | +670: | | | | | | | | | +671: | | | | | | | | | +672: | | | | | | | | | +673: | | | | | | | | | +674: | | | | | | | | | +675: | | | | | | | | | +676: | | | | | | | | | +677: | | | | | | | | | +678: | | | | | | | | | +679: | | | | | | | | | +680: | | | | | | | | | +681: | | | | | | | | | +682: | | | | | | | | | +683: | | | | | | | | | +684: | | | | | | | | | +685: | | | | | | | | | +686: | | | | | | | | | +687: | | | | | | | | | +688: | | | | | | | | | +689: | | | | | | | | | +690: | | | | | | | | | +691: | | | | | | | | | +692: | | | | | | | | | +693: | | | | | | | | | +694: | | | | | | | | | +695: | | | | | | | | | +696: | | | | | | | | | +697: | | | | | | | | | +698: | | | | | | | | | +699: | | | | | | | | | +700: | | | | | | | | | +701: | | | | | | | | | +702: | | | | | | | | | +703: | | | | | | | | | +704: | | | | | | | | | +705: | | | | | | | | | +706: | | | | | | | | | +707: | | | | | | | | | +708: | | | | | | | | | +709: | | | | | | | | | +710: | | | | | | | | | +711: | | | | | | | | | +712: | | | | | | | | | +713: | | | | | | | | | +714: | | | | | | | | | +715: | | | | | | | | | +716: | | | | | | | | | +717: | | | | | | | | | +718: | | | | | | | | | +719: | | | | | | | | | +720: | | | | | | | | | +721: | | | | | | | | | +722: | | | | | | | | | +723: | | | | | | | | | +724: | | | | | | | | | +725: | | | | | | | | | +726: | | | | | | | | | +727: | | | | | | | | | +728: | | | | | | | | | +729: | | | | | | | | | +730: | | | | | | | | | +731: | | | | | | | | | +732: | | | | | | | | | +733: | | | | | | | | | +734: | | | | | | | | | +735: | | | | | | | | | +736: | | | | | | | | | +737: | | | | | | | | | +738: | | | | | | | | | +739: | | | | | | | | | +740: | | | | | | | | | +741: | | | | | | | | | +742: | | | | | | | | | +743: | | | | | | | | | +744: | | | | | | | | | +745: | | | | | | | | | +746: | | | | | | | | | +747: | | | | | | | | | +748: | | | | | | | | | +749: | | | | | | | | | +750: | | | | | | | | | +751: | | | | | | | | | +752: | | | | | | | | | +753: | | | | | | | | | +754: | | | | | | | | | +755: | | | | | | | | | +756: | | | | | | | | | +757: | | | | | | | | | +758: | | | | | | | | | +759: | | | | | | | | | +760: | | | | | | | | | +761: | | | | | | | | | +762: | | | | | | | | | +763: | | | | | | | | | +764: | | | | | | | | | +765: | | | | | | | | | +766: | | | | | | | | | +767: | | | | | | | | | +768: | | | | | | | | | +769: | | | | | | | | | +770: | | | | | | | | | +771: | | | | | | | | | +772: | | | | | | | | | +773: | | | | | | | | | +774: | | | | | | | | | +775: | | | | | | | | | +776: | | | | | | | | | +777: | | | | | | | | | +778: | | | | | | | | | +779: | | | | | | | | | +780: | | | | | | | | | +781: | | | | | | | | | +782: | | | | | | | | | +783: | | | | | | | | | +784: | | | | | | | | | +785: | | | | | | | | | +786: | | | | | | | | | +787: | | | | | | | | | +788: | | | | | | | | | +789: | | | | | | | | | +790: | | | | | | | | | +791: | | | | | | | | | +792: | | | | | | | | | +793: | | | | | | | | | +794: | | | | | | | | | +795: | | | | | | | | | +796: | | | | | | | | | +797: | | | | | | | | | +798: | | | | | | | | | +799: | | | | | | | | | +800: | | | | | | | | | +801: | | | | | | | | | +802: | | | | | | | | | +803: | | | | | | | | | +804: | | | | | | | | | +805: | | | | | | | | | +806: | | | | | | | | | +807: | | | | | | | | | +808: | | | | | | | | | +809: | | | | | | | | | +810: | | | | | | | | | +811: | | | | | | | | | +812: | | | | | | | | | +813: | | | | | | | | | +814: | | | | | | | | | +815: | | | | | | | | | +816: | | | | | | | | | +817: | | | | | | | | | +818: | | | | | | | | | +819: | | | | | | | | | +820: | | | | | | | | | +821: | | | | | | | | | +822: | | | | | | | | | +823: | | | | | | | | | +824: | | | | | | | | | +825: | | | | | | | | | +826: | | | | | | | | | +827: | | | | | | | | | +828: | | | | | | | | | +829: | | | | | | | | | +830: | | | | | | | | | +831: | | | | | | | | | +832: | | | | | | | | | +833: | | | | | | | | | +834: | | | | | | | | | +835: | | | | | | | | | +836: | | | | | | | | | +837: | | | | | | | | | +838: | | | | | | | | | +839: | | | | | | | | | +840: | | | | | | | | | +841: | | | | | | | | | +842: | | | | | | | | | +843: | | | | | | | | | +844: | | | | | | | | | +845: | | | | | | | | | +846: | | | | | | | | | +847: | | | | | | | | | +848: | | | | | | | | | +849: | | | | | | | | | +850: | | | | | | | | | +851: | | | | | | | | | +852: | | | | | | | | | +853: | | | | | | | | | +854: | | | | | | | | | +855: | | | | | | | | | +856: | | | | | | | | | +857: | | | | | | | | | +858: | | | | | | | | | +859: | | | | | | | | | +860: | | | | | | | | | +861: | | | | | | | | | +862: | | | | | | | | | +863: | | | | | | | | | +864: | | | | | | | | | +865: | | | | | | | | | +866: | | | | | | | | | +867: | | | | | | | | | +868: | | | | | | | | | +869: | | | | | | | | | +870: | | | | | | | | | +871: | | | | | | | | | +872: | | | | | | | | | +873: | | | | | | | | | +874: | | | | | | | | | +875: | | | | | | | | | +876: | | | | | | | | | +877: | | | | | | | | | +878: | | | | | | | | | +879: | | | | | | | | | +880: | | | | | | | | | +881: | | | | | | | | | +882: | | | | | | | | | +883: | | | | | | | | | +884: | | | | | | | | | +885: | | | | | | | | | +886: | | | | | | | | | +887: | | | | | | | | | +888: | | | | | | | | | +889: | | | | | | | | | +890: | | | | | | | | | +891: | | | | | | | | | +892: | | | | | | | | | +893: | | | | | | | | | +894: | | | | | | | | | +895: | | | | | | | | | +896: | | | | | | | | | +897: | | | | | | | | | +898: | | | | | | | | | +899: | | | | | | | | | +900: | | | | | | | | | +901: | | | | | | | | | +902: | | | | | | | | | +903: | | | | | | | | | +904: | | | | | | | | | +905: | | | | | | | | | +906: | | | | | | | | | +907: | | | | | | | | | +908: | | | | | | | | | +909: | | | | | | | | | +910: | | | | | | | | | +911: | | | | | | | | | +912: | | | | | | | | | +913: | | | | | | | | | +914: | | | | | | | | | +915: | | | | | | | | | +916: | | | | | | | | | +917: | | | | | | | | | +918: | | | | | | | | | +919: | | | | | | | | | +920: | | | | | | | | | +921: | | | | | | | | | +922: | | | | | | | | | +923: | | | | | | | | | +924: | | | | | | | | | +925: | | | | | | | | | +926: | | | | | | | | | +927: | | | | | | | | | +928: | | | | | | | | | +929: | | | | | | | | | +930: | | | | | | | | | +931: | | | | | | | | | +932: | | | | | | | | | +933: | | | | | | | | | +934: | | | | | | | | | +935: | | | | | | | | | +936: | | | | | | | | | +937: | | | | | | | | | +938: | | | | | | | | | +939: | | | | | | | | | +940: | | | | | | | | | +941: | | | | | | | | | +942: | | | | | | | | | +943: | | | | | | | | | +944: | | | | | | | | | +945: | | | | | | | | | +946: | | | | | | | | | +947: | | | | | | | | | +948: | | | | | | | | | +949: | | | | | | | | | +950: | | | | | | | | | +951: | | | | | | | | | +952: | | | | | | | | | +953: | | | | | | | | | +954: | | | | | | | | | +955: | | | | | | | | | +956: | | | | | | | | | +957: | | | | | | | | | +958: | | | | | | | | | +959: | | | | | | | | | +960: | | | | | | | | | +961: | | | | | | | | | +962: | | | | | | | | | +963: | | | | | | | | | +964: | | | | | | | | | +965: | | | | | | | | | +966: | | | | | | | | | +967: | | | | | | | | | +968: | | | | | | | | | +969: | | | | | | | | | +970: | | | | | | | | | +971: | | | | | | | | | +972: | | | | | | | | | +973: | | | | | | | | | +974: | | | | | | | | | +975: | | | | | | | | | +976: | | | | | | | | | +977: | | | | | | | | | +978: | | | | | | | | | +979: | | | | | | | | | +980: | | | | | | | | | +981: | | | | | | | | | +982: | | | | | | | | | +983: | | | | | | | | | +984: | | | | | | | | | +985: | | | | | | | | | +986: | | | | | | | | | +987: | | | | | | | | | +988: | | | | | | | | | +989: | | | | | | | | | +990: | | | | | | | | | +991: | | | | | | | | | +992: | | | | | | | | | +993: | | | | | | | | | +994: | | | | | | | | | +995: | | | | | | | | | +996: | | | | | | | | | +997: | | | | | | | | | +998: | | | | | | | | | +999: | | | | | | | | | +1000: | | | | | | | | | +1001: | | | | | | | | | +1002: | | | | | | | | | +1003: | | | | | | | | | +1004: | | | | | | | | | +1005: | | | | | | | | | +1006: | | | | | | | | | +1007: | | | | | | | | | +1008: | | | | | | | | | +1009: | | | | | | | | | +1010: | | | | | | | | | +1011: | | | | | | | | | +1012: | | | | | | | | | +1013: | | | | | | | | | +1014: | | | | | | | | | +1015: | | | | | | | | | +1016: | | | | | | | | | +1017: | | | | | | | | | +1018: | | | | | | | | | +1019: | | | | | | | | | +1020: | | | | | | | | | +1021: | | | | | | | | | +1022: | | | | | | | | | +1023: | | | | | | | | | +1024: | | | | | | | | | +1025: | | | | | | | | | +1026: | | | | | | | | | +1027: | | | | | | | | | +1028: | | | | | | | | | +1029: | | | | | | | | | +1030: | | | | | | | | | +1031: | | | | | | | | | +1032: | | | | | | | | | +1033: | | | | | | | | | +1034: | | | | | | | | | +1035: | | | | | | | | | +1036: | | | | | | | | | +1037: | | | | | | | | | +1038: | | | | | | | | | +1039: | | | | | | | | | +1040: | | | | | | | | | +1041: | | | | | | | | | +1042: | | | | | | | | | +1043: | | | | | | | | | +1044: | | | | | | | | | +1045: | | | | | | | | | +1046: | | | | | | | | | +1047: | | | | | | | | | +1048: | | | | | | | | | +1049: | | | | | | | | | +1050: | | | | | | | | | +1051: | | | | | | | | | +1052: | | | | | | | | | +1053: | | | | | | | | | +1054: | | | | | | | | | +1055: | | | | | | | | | +1056: | | | | | | | | | +1057: | | | | | | | | | +1058: | | | | | | | | | +1059: | | | | | | | | | +1060: | | | | | | | | | +1061: | | | | | | | | | +1062: | | | | | | | | | +1063: | | | | | | | | | +1064: | | | | | | | | | +1065: | | | | | | | | | +1066: | | | | | | | | | +1067: | | | | | | | | | +1068: | | | | | | | | | +1069: | | | | | | | | | +1070: | | | | | | | | | +1071: | | | | | | | | | +1072: | | | | | | | | | +1073: | | | | | | | | | +1074: | | | | | | | | | +1075: | | | | | | | | | +1076: | | | | | | | | | +1077: | | | | | | | | | +1078: | | | | | | | | | +1079: | | | | | | | | | +1080: | | | | | | | | | +1081: | | | | | | | | | +1082: | | | | | | | | | +1083: | | | | | | | | | +1084: | | | | | | | | | +1085: | | | | | | | | | +1086: | | | | | | | | | +1087: | | | | | | | | | +1088: | | | | | | | | | +1089: | | | | | | | | | +1090: | | | | | | | | | +1091: | | | | | | | | | +1092: | | | | | | | | | +1093: | | | | | | | | | +1094: | | | | | | | | | +1095: | | | | | | | | | +1096: | | | | | | | | | +1097: | | | | | | | | | +1098: | | | | | | | | | +1099: | | | | | | | | | +1100: | | | | | | | | | +1101: | | | | | | | | | +1102: | | | | | | | | | +1103: | | | | | | | | | +1104: | | | | | | | | | +1105: | | | | | | | | | +1106: | | | | | | | | | +1107: | | | | | | | | | +1108: | | | | | | | | | +1109: | | | | | | | | | +1110: | | | | | | | | | +1111: | | | | | | | | | +1112: | | | | | | | | | +1113: | | | | | | | | | +1114: | | | | | | | | | +1115: | | | | | | | | | +1116: | | | | | | | | | +1117: | | | | | | | | | +1118: | | | | | | | | | +1119: | | | | | | | | | +1120: | | | | | | | | | +1121: | | | | | | | | | +1122: | | | | | | | | | +1123: | | | | | | | | | +1124: | | | | | | | | | +1125: | | | | | | | | | +1126: | | | | | | | | | +1127: | | | | | | | | | +1128: | | | | | | | | | +1129: | | | | | | | | | +1130: | | | | | | | | | +1131: | | | | | | | | | +1132: | | | | | | | | | +1133: | | | | | | | | | +1134: | | | | | | | | | +1135: | | | | | | | | | +1136: | | | | | | | | | +1137: | | | | | | | | | +1138: | | | | | | | | | +1139: | | | | | | | | | +1140: | | | | | | | | | +1141: | | | | | | | | | +1142: | | | | | | | | | +1143: | | | | | | | | | +1144: | | | | | | | | | +1145: | | | | | | | | | +1146: | | | | | | | | | +1147: | | | | | | | | | +1148: | | | | | | | | | +1149: | | | | | | | | | +1150: | | | | | | | | | +1151: | | | | | | | | | +1152: | | | | | | | | | +1153: | | | | | | | | | +1154: | | | | | | | | | +1155: | | | | | | | | | +1156: | | | | | | | | | +1157: | | | | | | | | | +1158: | | | | | | | | | +1159: | | | | | | | | | +1160: | | | | | | | | | +1161: | | | | | | | | | +1162: | | | | | | | | | +1163: | | | | | | | | | +1164: | | | | | | | | | +1165: | | | | | | | | | +1166: | | | | | | | | | +1167: | | | | | | | | | +1168: | | | | | | | | | +1169: | | | | | | | | | +1170: | | | | | | | | | +1171: | | | | | | | | | +1172: | | | | | | | | | +1173: | | | | | | | | | +1174: | | | | | | | | | +1175: | | | | | | | | | +1176: | | | | | | | | | +1177: | | | | | | | | | +1178: | | | | | | | | | +1179: | | | | | | | | | +1180: | | | | | | | | | +1181: | | | | | | | | | +1182: | | | | | | | | | +1183: | | | | | | | | | +1184: | | | | | | | | | +1185: | | | | | | | | | +1186: | | | | | | | | | +1187: | | | | | | | | | +1188: | | | | | | | | | +1189: | | | | | | | | | +1190: | | | | | | | | | +1191: | | | | | | | | | +1192: | | | | | | | | | +1193: | | | | | | | | | +1194: | | | | | | | | | +1195: | | | | | | | | | +1196: | | | | | | | | | +1197: | | | | | | | | | +1198: | | | | | | | | | +1199: | | | | | | | | | +1200: | | | | | | | | | +1201: | | | | | | | | | +1202: | | | | | | | | | +1203: | | | | | | | | | +1204: | | | | | | | | | +1205: | | | | | | | | | +1206: | | | | | | | | | +1207: | | | | | | | | | +1208: | | | | | | | | | +1209: | | | | | | | | | +1210: | | | | | | | | | +1211: | | | | | | | | | +1212: | | | | | | | | | +1213: | | | | | | | | | +1214: | | | | | | | | | +1215: | | | | | | | | | +1216: | | | | | | | | | +1217: | | | | | | | | | +1218: | | | | | | | | | +1219: | | | | | | | | | +1220: | | | | | | | | | +1221: | | | | | | | | | +1222: | | | | | | | | | +1223: | | | | | | | | | +1224: | | | | | | | | | +1225: | | | | | | | | | +1226: | | | | | | | | | +1227: | | | | | | | | | +1228: | | | | | | | | | +1229: | | | | | | | | | +1230: | | | | | | | | | +1231: | | | | | | | | | +1232: | | | | | | | | | +1233: | | | | | | | | | +1234: | | | | | | | | | +1235: | | | | | | | | | +1236: | | | | | | | | | +1237: | | | | | | | | | +1238: | | | | | | | | | +1239: | | | | | | | | | +1240: | | | | | | | | | +1241: | | | | | | | | | +1242: | | | | | | | | | +1243: | | | | | | | | | +1244: | | | | | | | | | +1245: | | | | | | | | | +1246: | | | | | | | | | +1247: | | | | | | | | | +1248: | | | | | | | | | +1249: | | | | | | | | | +1250: | | | | | | | | | +1251: | | | | | | | | | +1252: | | | | | | | | | +1253: | | | | | | | | | +1254: | | | | | | | | | +1255: | | | | | | | | | +1256: | | | | | | | | | +1257: | | | | | | | | | +1258: | | | | | | | | | +1259: | | | | | | | | | +1260: | | | | | | | | | +1261: | | | | | | | | | +1262: | | | | | | | | | +1263: | | | | | | | | | +1264: | | | | | | | | | +1265: | | | | | | | | | +1266: | | | | | | | | | +1267: | | | | | | | | | +1268: | | | | | | | | | +1269: | | | | | | | | | +1270: | | | | | | | | | +1271: | | | | | | | | | +1272: | | | | | | | | | +1273: | | | | | | | | | +1274: | | | | | | | | | +1275: | | | | | | | | | +1276: | | | | | | | | | +1277: | | | | | | | | | +1278: | | | | | | | | | +1279: | | | | | | | | | +1280: | | | | | | | | | +1281: | | | | | | | | | +1282: | | | | | | | | | +1283: | | | | | | | | | +1284: | | | | | | | | | +1285: | | | | | | | | | +1286: | | | | | | | | | +1287: | | | | | | | | | +1288: | | | | | | | | | +1289: | | | | | | | | | +1290: | | | | | | | | | +1291: | | | | | | | | | +1292: | | | | | | | | | +1293: | | | | | | | | | +1294: | | | | | | | | | +1295: | | | | | | | | | +1296: | | | | | | | | | +1297: | | | | | | | | | +1298: | | | | | | | | | +1299: | | | | | | | | | +1300: | | | | | | | | | +1301: | | | | | | | | | +1302: | | | | | | | | | +1303: | | | | | | | | | +1304: | | | | | | | | | +1305: | | | | | | | | | +1306: | | | | | | | | | +1307: | | | | | | | | | +1308: | | | | | | | | | +1309: | | | | | | | | | +1310: | | | | | | | | | +1311: | | | | | | | | | +1312: | | | | | | | | | +1313: | | | | | | | | | +1314: | | | | | | | | | +1315: | | | | | | | | | +1316: | | | | | | | | | +1317: | | | | | | | | | +1318: | | | | | | | | | +1319: | | | | | | | | | +1320: | | | | | | | | | +1321: | | | | | | | | | +1322: | | | | | | | | | +1323: | | | | | | | | | +1324: | | | | | | | | | +1325: | | | | | | | | | +1326: | | | | | | | | | +1327: | | | | | | | | | +1328: | | | | | | | | | +1329: | | | | | | | | | +1330: | | | | | | | | | +1331: | | | | | | | | | +1332: | | | | | | | | | +1333: | | | | | | | | | +1334: | | | | | | | | | +1335: | | | | | | | | | +1336: | | | | | | | | | +1337: | | | | | | | | | +1338: | | | | | | | | | +1339: | | | | | | | | | +1340: | | | | | | | | | +1341: | | | | | | | | | +1342: | | | | | | | | | +1343: | | | | | | | | | +1344: | | | | | | | | | +1345: | | | | | | | | | +1346: | | | | | | | | | +1347: | | | | | | | | | +1348: | | | | | | | | | +1349: | | | | | | | | | +1350: | | | | | | | | | +1351: | | | | | | | | | +1352: | | | | | | | | | +1353: | | | | | | | | | +1354: | | | | | | | | | +1355: | | | | | | | | | +1356: | | | | | | | | | +1357: | | | | | | | | | +1358: | | | | | | | | | +1359: | | | | | | | | | +1360: | | | | | | | | | +1361: | | | | | | | | | +1362: | | | | | | | | | +1363: | | | | | | | | | +1364: | | | | | | | | | +1365: | | | | | | | | | +1366: | | | | | | | | | +1367: | | | | | | | | | +1368: | | | | | | | | | +1369: | | | | | | | | | +1370: | | | | | | | | | +1371: | | | | | | | | | +1372: | | | | | | | | | +1373: | | | | | | | | | +1374: | | | | | | | | | +1375: | | | | | | | | | +1376: | | | | | | | | | +1377: | | | | | | | | | +1378: | | | | | | | | | +1379: | | | | | | | | | +1380: | | | | | | | | | +1381: | | | | | | | | | +1382: | | | | | | | | | +1383: | | | | | | | | | +1384: | | | | | | | | | +1385: | | | | | | | | | +1386: | | | | | | | | | +1387: | | | | | | | | | +1388: | | | | | | | | | +1389: | | | | | | | | | +1390: | | | | | | | | | +1391: | | | | | | | | | +1392: | | | | | | | | | +1393: | | | | | | | | | +1394: | | | | | | | | | +1395: | | | | | | | | | +1396: | | | | | | | | | +1397: | | | | | | | | | +1398: | | | | | | | | | +1399: | | | | | | | | | +1400: | | | | | | | | | +1401: | | | | | | | | | +1402: | | | | | | | | | +1403: | | | | | | | | | +1404: | | | | | | | | | +1405: | | | | | | | | | +1406: | | | | | | | | | +1407: | | | | | | | | | +1408: | | | | | | | | | +1409: | | | | | | | | | +1410: | | | | | | | | | +1411: | | | | | | | | | +1412: | | | | | | | | | +1413: | | | | | | | | | +1414: | | | | | | | | | +1415: | | | | | | | | | +1416: | | | | | | | | | +1417: | | | | | | | | | +1418: | | | | | | | | | +1419: | | | | | | | | | +1420: | | | | | | | | | +1421: | | | | | | | | | +1422: | | | | | | | | | +1423: | | | | | | | | | +1424: | | | | | | | | | +1425: | | | | | | | | | +1426: | | | | | | | | | +1427: | | | | | | | | | +1428: | | | | | | | | | +1429: | | | | | | | | | +1430: | | | | | | | | | +1431: | | | | | | | | | +1432: | | | | | | | | | +1433: | | | | | | | | | +1434: | | | | | | | | | +1435: | | | | | | | | | +1436: | | | | | | | | | +1437: | | | | | | | | | +1438: | | | | | | | | | +1439: | | | | | | | | | +1440: | | | | | | | | | +1441: | | | | | | | | | +1442: | | | | | | | | | +1443: | | | | | | | | | +1444: | | | | | | | | | +1445: | | | | | | | | | +1446: | | | | | | | | | +1447: | | | | | | | | | +1448: | | | | | | | | | +1449: | | | | | | | | | +1450: | | | | | | | | | +1451: | | | | | | | | | +1452: | | | | | | | | | +1453: | | | | | | | | | +1454: | | | | | | | | | +1455: | | | | | | | | | +1456: | | | | | | | | | +1457: | | | | | | | | | +1458: | | | | | | | | | +1459: | | | | | | | | | +1460: | | | | | | | | | +1461: | | | | | | | | | +1462: | | | | | | | | | +1463: | | | | | | | | | +1464: | | | | | | | | | +1465: | | | | | | | | | +1466: | | | | | | | | | +1467: | | | | | | | | | +1468: | | | | | | | | | +1469: | | | | | | | | | +1470: | | | | | | | | | +1471: | | | | | | | | | +1472: | | | | | | | | | +1473: | | | | | | | | | +1474: | | | | | | | | | +1475: | | | | | | | | | +1476: | | | | | | | | | +1477: | | | | | | | | | +1478: | | | | | | | | | +1479: | | | | | | | | | +1480: | | | | | | | | | +1481: | | | | | | | | | +1482: | | | | | | | | | +1483: | | | | | | | | | +1484: | | | | | | | | | +1485: | | | | | | | | | +1486: | | | | | | | | | +1487: | | | | | | | | | +1488: | | | | | | | | | +1489: | | | | | | | | | +1490: | | | | | | | | | +1491: | | | | | | | | | +1492: | | | | | | | | | +1493: | | | | | | | | | +1494: | | | | | | | | | +1495: | | | | | | | | | +1496: | | | | | | | | | +1497: | | | | | | | | | +1498: | | | | | | | | | +1499: | | | | | | | | | +1500: | | | | | | | | | +1501: | | | | | | | | | +1502: | | | | | | | | | +1503: | | | | | | | | | +1504: | | | | | | | | | +1505: | | | | | | | | | +1506: | | | | | | | | | +1507: | | | | | | | | | +1508: | | | | | | | | | +1509: | | | | | | | | | +1510: | | | | | | | | | +1511: | | | | | | | | | +1512: | | | | | | | | | +1513: | | | | | | | | | +1514: | | | | | | | | | +1515: | | | | | | | | | +1516: | | | | | | | | | +1517: | | | | | | | | | +1518: | | | | | | | | | +1519: | | | | | | | | | +1520: | | | | | | | | | +1521: | | | | | | | | | +1522: | | | | | | | | | +1523: | | | | | | | | | +1524: | | | | | | | | | +1525: | | | | | | | | | +1526: | | | | | | | | | +1527: | | | | | | | | | +1528: | | | | | | | | | +1529: | | | | | | | | | +1530: | | | | | | | | | +1531: | | | | | | | | | +1532: | | | | | | | | | +1533: | | | | | | | | | +1534: | | | | | | | | | +1535: | | | | | | | | | +1536: | | | | | | | | | +1537: | | | | | | | | | +1538: | | | | | | | | | +1539: | | | | | | | | | +1540: | | | | | | | | | +1541: | | | | | | | | | +1542: | | | | | | | | | +1543: | | | | | | | | | +1544: | | | | | | | | | +1545: | | | | | | | | | +1546: | | | | | | | | | +1547: | | | | | | | | | +1548: | | | | | | | | | +1549: | | | | | | | | | +1550: | | | | | | | | | +1551: | | | | | | | | | +1552: | | | | | | | | | +1553: | | | | | | | | | +1554: | | | | | | | | | +1555: | | | | | | | | | +1556: | | | | | | | | | +1557: | | | | | | | | | +1558: | | | | | | | | | +1559: | | | | | | | | | +1560: | | | | | | | | | +1561: | | | | | | | | | +1562: | | | | | | | | | +1563: | | | | | | | | | +1564: | | | | | | | | | +1565: | | | | | | | | | +1566: | | | | | | | | | +1567: | | | | | | | | | +1568: | | | | | | | | | +1569: | | | | | | | | | +1570: | | | | | | | | | +1571: | | | | | | | | | +1572: | | | | | | | | | +1573: | | | | | | | | | +1574: | | | | | | | | | +1575: | | | | | | | | | +1576: | | | | | | | | | +1577: | | | | | | | | | +1578: | | | | | | | | | +1579: | | | | | | | | | +1580: | | | | | | | | | +1581: | | | | | | | | | +1582: | | | | | | | | | +1583: | | | | | | | | | +1584: | | | | | | | | | +1585: | | | | | | | | | +1586: | | | | | | | | | +1587: | | | | | | | | | +1588: | | | | | | | | | +1589: | | | | | | | | | +1590: | | | | | | | | | +1591: | | | | | | | | | +1592: | | | | | | | | | +1593: | | | | | | | | | +1594: | | | | | | | | | +1595: | | | | | | | | | +1596: | | | | | | | | | +1597: | | | | | | | | | +1598: | | | | | | | | | +1599: | | | | | | | | | +1600: | | | | | | | | | +1601: | | | | | | | | | +1602: | | | | | | | | | +1603: | | | | | | | | | +1604: | | | | | | | | | +1605: | | | | | | | | | +1606: | | | | | | | | | +1607: | | | | | | | | | +1608: | | | | | | | | | +1609: | | | | | | | | | +1610: | | | | | | | | | +1611: | | | | | | | | | +1612: | | | | | | | | | +1613: | | | | | | | | | +1614: | | | | | | | | | +1615: | | | | | | | | | +1616: | | | | | | | | | +1617: | | | | | | | | | +1618: | | | | | | | | | +1619: | | | | | | | | | +1620: | | | | | | | | | +1621: | | | | | | | | | +1622: | | | | | | | | | +1623: | | | | | | | | | +1624: | | | | | | | | | +1625: | | | | | | | | | +1626: | | | | | | | | | +1627: | | | | | | | | | +1628: | | | | | | | | | +1629: | | | | | | | | | +1630: | | | | | | | | | +1631: | | | | | | | | | +1632: | | | | | | | | | +1633: | | | | | | | | | +1634: | | | | | | | | | +1635: | | | | | | | | | +1636: | | | | | | | | | +1637: | | | | | | | | | +1638: | | | | | | | | | +1639: | | | | | | | | | +1640: | | | | | | | | | +1641: | | | | | | | | | +1642: | | | | | | | | | +1643: | | | | | | | | | +1644: | | | | | | | | | +1645: | | | | | | | | | +1646: | | | | | | | | | +1647: | | | | | | | | | +1648: | | | | | | | | | +1649: | | | | | | | | | +1650: | | | | | | | | | +1651: | | | | | | | | | +1652: | | | | | | | | | +1653: | | | | | | | | | +1654: | | | | | | | | | +1655: | | | | | | | | | +1656: | | | | | | | | | +1657: | | | | | | | | | +1658: | | | | | | | | | +1659: | | | | | | | | | +1660: | | | | | | | | | +1661: | | | | | | | | | +1662: | | | | | | | | | +1663: | | | | | | | | | +1664: | | | | | | | | | +1665: | | | | | | | | | +1666: | | | | | | | | | +1667: | | | | | | | | | +1668: | | | | | | | | | +1669: | | | | | | | | | +1670: | | | | | | | | | +1671: | | | | | | | | | +1672: | | | | | | | | | +1673: | | | | | | | | | +1674: | | | | | | | | | +1675: | | | | | | | | | +1676: | | | | | | | | | +1677: | | | | | | | | | +1678: | | | | | | | | | +1679: | | | | | | | | | +1680: | | | | | | | | | +1681: | | | | | | | | | +1682: | | | | | | | | | +1683: | | | | | | | | | +1684: | | | | | | | | | +1685: | | | | | | | | | +1686: | | | | | | | | | +1687: | | | | | | | | | +1688: | | | | | | | | | +1689: | | | | | | | | | +1690: | | | | | | | | | +1691: | | | | | | | | | +1692: | | | | | | | | | +1693: | | | | | | | | | +1694: | | | | | | | | | +1695: | | | | | | | | | +1696: | | | | | | | | | +1697: | | | | | | | | | +1698: | | | | | | | | | +1699: | | | | | | | | | +1700: | | | | | | | | | +1701: | | | | | | | | | +1702: | | | | | | | | | +1703: | | | | | | | | | +1704: | | | | | | | | | +1705: | | | | | | | | | +1706: | | | | | | | | | +1707: | | | | | | | | | +1708: | | | | | | | | | +1709: | | | | | | | | | +1710: | | | | | | | | | +1711: | | | | | | | | | +1712: | | | | | | | | | +1713: | | | | | | | | | +1714: | | | | | | | | | +1715: | | | | | | | | | +1716: | | | | | | | | | +1717: | | | | | | | | | +1718: | | | | | | | | | +1719: | | | | | | | | | +1720: | | | | | | | | | +1721: | | | | | | | | | +1722: | | | | | | | | | +1723: | | | | | | | | | +1724: | | | | | | | | | +1725: | | | | | | | | | +1726: | | | | | | | | | +1727: | | | | | | | | | +1728: | | | | | | | | | +1729: | | | | | | | | | +1730: | | | | | | | | | +1731: | | | | | | | | | +1732: | | | | | | | | | +1733: | | | | | | | | | +1734: | | | | | | | | | +1735: | | | | | | | | | +1736: | | | | | | | | | +1737: | | | | | | | | | +1738: | | | | | | | | | +1739: | | | | | | | | | +1740: | | | | | | | | | +1741: | | | | | | | | | +1742: | | | | | | | | | +1743: | | | | | | | | | +1744: | | | | | | | | | +1745: | | | | | | | | | +1746: | | | | | | | | | +1747: | | | | | | | | | +1748: | | | | | | | | | +1749: | | | | | | | | | +1750: | | | | | | | | | +1751: | | | | | | | | | +1752: | | | | | | | | | +1753: | | | | | | | | | +1754: | | | | | | | | | +1755: | | | | | | | | | +1756: | | | | | | | | | +1757: | | | | | | | | | +1758: | | | | | | | | | +1759: | | | | | | | | | +1760: | | | | | | | | | +1761: | | | | | | | | | +1762: | | | | | | | | | +1763: | | | | | | | | | +1764: | | | | | | | | | +1765: | | | | | | | | | +1766: | | | | | | | | | +1767: | | | | | | | | | +1768: | | | | | | | | | +1769: | | | | | | | | | +1770: | | | | | | | | | +1771: | | | | | | | | | +1772: | | | | | | | | | +1773: | | | | | | | | | +1774: | | | | | | | | | +1775: | | | | | | | | | +1776: | | | | | | | | | +1777: | | | | | | | | | +1778: | | | | | | | | | +1779: | | | | | | | | | +1780: | | | | | | | | | +1781: | | | | | | | | | +1782: | | | | | | | | | +1783: | | | | | | | | | +1784: | | | | | | | | | +1785: | | | | | | | | | +1786: | | | | | | | | | +1787: | | | | | | | | | +1788: | | | | | | | | | +1789: | | | | | | | | | +1790: | | | | | | | | | +1791: | | | | | | | | | +1792: | | | | | | | | | +1793: | | | | | | | | | +1794: | | | | | | | | | +1795: | | | | | | | | | +1796: | | | | | | | | | +1797: | | | | | | | | | +1798: | | | | | | | | | +1799: | | | | | | | | | diff --git a/src/java/autotest/io/qt/autotests/TestDesignerQuick.java b/src/java/autotest/io/qt/autotests/TestDesignerQuick.java index 750e6391..b0603c52 100644 --- a/src/java/autotest/io/qt/autotests/TestDesignerQuick.java +++ b/src/java/autotest/io/qt/autotests/TestDesignerQuick.java @@ -7,7 +7,6 @@ import org.junit.BeforeClass; import org.junit.Test; -import io.qt.QtUtilities; import io.qt.core.*; import io.qt.designer.*; import io.qt.quick.*; diff --git a/src/java/autotest/io/qt/autotests/TestInjectedCode.java b/src/java/autotest/io/qt/autotests/TestInjectedCode.java index 97f65fc6..720bfb36 100644 --- a/src/java/autotest/io/qt/autotests/TestInjectedCode.java +++ b/src/java/autotest/io/qt/autotests/TestInjectedCode.java @@ -1077,11 +1077,24 @@ public void testQBrushGradient() { @Test public void testQImageLoadFromData() { - QImage img = new QImage(); + QImage img; QFile file = new QFile(":io/qt/autotests/svgcards-example.png"); assertTrue(file.open(QIODevice.OpenModeFlag.ReadOnly)); + img = new QImage(); + img.load(file, "png"); + assertFalse(img.isNull()); + assertEquals(418, img.width()); + file.reset(); + QByteArray data = file.readAll(); + img = new QImage(); + img.loadFromData(data.toByteArray()); + assertFalse(img.isNull()); + assertEquals(418, img.width()); + file.reset(); + + img = new QImage(); img.load(file, "JPEG"); assertTrue(img.isNull()); // this assert fails when plugins did not load diff --git a/src/java/autotest/io/qt/autotests/TestQml.java b/src/java/autotest/io/qt/autotests/TestQml.java index 19be4aa2..38f559c7 100644 --- a/src/java/autotest/io/qt/autotests/TestQml.java +++ b/src/java/autotest/io/qt/autotests/TestQml.java @@ -286,7 +286,7 @@ public void tearDown() { public void run_test() { QtQml.qmlClearTypeRegistrations(); QtQml.qmlRegisterType(TestChild.class, "io.qt.test", 1, 0, "TestChild"); - QtQml.qmlRegisterType(TestObject.class, "io.qt.test", 1, 0, "TestObject"); + int id = QtQml.qmlRegisterType(TestObject.class, "io.qt.test", 1, 0, "TestObject"); QByteArray data = new QByteArray("import io.qt.test 1.0\n" + "import QtQuick 2.0\n" + "TestObject {\n" + @@ -313,6 +313,7 @@ public void run_test() { Assert.assertEquals("child1", backEnd.testChildren.at(0).objectName()); Assert.assertEquals("child2", backEnd._testChildren.get(1).objectName()); Assert.assertEquals("child2", backEnd.testChildren.at(1).objectName()); + Assert.assertEquals(id, QtQml.qmlTypeId("io.qt.test", 1, 0, "TestObject")); } @Test @@ -771,7 +772,7 @@ public void run_testPropertieswithObjectTypes() { QtQml.qmlRegisterType(Message.class, "io.qt.test", 1, 0, "Message"); AtomicBoolean singletonCreated = new AtomicBoolean(); QtQml.ObjectCallback objectCallback; - QtQml.qmlRegisterSingletonType(Singleton.class, "io.qt.test", 1, 0, "TextSource", objectCallback = (QQmlEngine qmlEngine, QJSEngine jsEngine)->{ + int singletonId = QtQml.qmlRegisterSingletonType(Singleton.class, "io.qt.test", 1, 0, "TextSource", objectCallback = (QQmlEngine qmlEngine, QJSEngine jsEngine)->{ singletonCreated.set(true); return new Singleton(); }); @@ -816,6 +817,12 @@ public void run_testPropertieswithObjectTypes() { Assert.assertTrue(singletonCreated.get()); objectCallback.dispose(); valueCallback.dispose(); + QObject singleton = engine.singletonInstance(QObject.class, singletonId); + Assert.assertTrue(singleton!=null); + singleton = engine.singletonInstance(QQuickItem.class, singletonId); + Assert.assertTrue(singleton==null); + singleton = engine.singletonInstance(Singleton.class, singletonId); + Assert.assertTrue(singleton!=null); } @Test diff --git a/src/java/autotest/io/qt/autotests/TestQmlPlugin.java b/src/java/autotest/io/qt/autotests/TestQmlPlugin.java index f7570566..562d7e02 100644 --- a/src/java/autotest/io/qt/autotests/TestQmlPlugin.java +++ b/src/java/autotest/io/qt/autotests/TestQmlPlugin.java @@ -28,6 +28,8 @@ ****************************************************************************/ package io.qt.autotests; +import java.io.File; + import org.junit.Assert; import org.junit.Assume; import org.junit.BeforeClass; @@ -56,10 +58,10 @@ public void run_testQmlPlugin() { QByteArray data = new QByteArray("import io.qt.test.car 2.0; Car {}"); QQmlEngine qmlengine = new QQmlEngine(); String version = QtJambiInternal.majorVersion()+"."+QtJambiInternal.minorVersion()+"."+QtJambiInternal.qtjambiPatchVersion(); - if(QtJambiInternal.isDebugBuild()) { - qmlengine.addImportPath(QDir.fromNativeSeparators(System.getProperty("user.dir", ""))+"/"+version+"/build/tests/debug/qml"); - }else { - qmlengine.addImportPath(QDir.fromNativeSeparators(System.getProperty("user.dir", ""))+"/"+version+"/build/tests/release/qml"); + String imports = System.getProperty("io.qt.qml.imports", ""); + if(!imports.isEmpty()) { + for(String i : imports.split(File.pathSeparator)) + qmlengine.addImportPath(i); } for(String path : QCoreApplication.libraryPaths()) { qmlengine.addImportPath(path); @@ -99,10 +101,10 @@ public void run_testQmlPlugin2() { QByteArray data = new QByteArray("import io.qt.test.car 2.0; import io.qt.test.garage 2.0; Garage{Car{}}"); QQmlEngine qmlengine = new QQmlEngine(); String version = QtJambiInternal.majorVersion()+"."+QtJambiInternal.minorVersion()+"."+QtJambiInternal.qtjambiPatchVersion(); - if(QtJambiInternal.isDebugBuild()) { - qmlengine.addImportPath(QDir.fromNativeSeparators(System.getProperty("user.dir", ""))+"/"+version+"/build/tests/debug/qml"); - }else { - qmlengine.addImportPath(QDir.fromNativeSeparators(System.getProperty("user.dir", ""))+"/"+version+"/build/tests/release/qml"); + String imports = System.getProperty("io.qt.qml-imports", ""); + if(!imports.isEmpty()) { + for(String i : imports.split(File.pathSeparator)) + qmlengine.addImportPath(i); } for(String path : QCoreApplication.libraryPaths()) { qmlengine.addImportPath(path); diff --git a/src/java/autotest/io/qt/autotests/TestQmlQt6.java b/src/java/autotest/io/qt/autotests/TestQmlQt6.java new file mode 100644 index 00000000..a2e6e6c5 --- /dev/null +++ b/src/java/autotest/io/qt/autotests/TestQmlQt6.java @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2009-2022 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved. +** +** This file is part of Qt Jambi. +** +** ** $BEGIN_LICENSE$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** $END_LICENSE$ +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ +package io.qt.autotests; + +import org.junit.Assert; +import org.junit.Test; + +import io.qt.core.QCoreApplication; +import io.qt.core.QObject; +import io.qt.qml.QJSEngine; +import io.qt.qml.QJSValue; + +public class TestQmlQt6 extends ApplicationInitializer{ + + @Test + public void testJSValue() { + QJSEngine engine = new QJSEngine(); + QJSValue value = engine.toScriptValue(5.4); + Assert.assertTrue(value.isNumber()); + Assert.assertEquals(0.000001, 5.4, value.toDouble()); + value = engine.toScriptValue(QCoreApplication.instance()); + Assert.assertTrue(value.isObject()); + QObject result = engine.fromScriptValue(value, QObject.class); + Assert.assertEquals(QCoreApplication.instance(), result); + } +} diff --git a/src/java/autotest/io/qt/autotests/TestThreads.java b/src/java/autotest/io/qt/autotests/TestThreads.java index e637791a..481ffa8a 100644 --- a/src/java/autotest/io/qt/autotests/TestThreads.java +++ b/src/java/autotest/io/qt/autotests/TestThreads.java @@ -718,8 +718,11 @@ protected void run() { thread = QThread.create(()->{ obj.startTimer(0); }); + thread.setUncaughtExceptionHandler((t,e)->{occurred[0] = e;}); thread.start(); thread.join(); + Assert.assertTrue(occurred[0] instanceof QThreadAffinityException); + occurred[0] = null; } public static void main(String args[]) { diff --git a/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt5.java b/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt5.java new file mode 100644 index 00000000..0119cdb2 --- /dev/null +++ b/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt5.java @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2009-2022 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved. +** +** This file is part of Qt Jambi. +** +** ** $BEGIN_LICENSE$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** $END_LICENSE$ +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ +package io.qt.autotests; + +import static org.junit.Assume.assumeTrue; + +import org.junit.BeforeClass; +import org.junit.Test; + +import io.qt.QtInvokable; +import io.qt.QtUtilities; +import io.qt.core.QByteArray; +import io.qt.core.QCoreApplication; +import io.qt.core.QList; +import io.qt.core.QMetaMethod; +import io.qt.core.QObject; +import io.qt.core.Qt; +import io.qt.gui.QGuiApplication; +import io.qt.gui.QOpenGLContext; +import io.qt.qml.QQmlApplicationEngine; +import io.qt.webengine.QtWebEngine; +import io.qt.widgets.QApplication; + +public class TestWebEngineQuickQt5 extends ApplicationInitializer { + + @BeforeClass + public static void testInitialize() throws Exception { + QtUtilities.initializePackage("io.qt.webengine"); + QCoreApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts); + ApplicationInitializer.testInitializeWithGui(); + assumeTrue("A screen is required to create a window.", QGuiApplication.primaryScreen()!=null); + boolean found = false; + try { + Class cls = Class.forName("io.qt.webengine.QtWebEngine"); + if (cls != null) + found = true; + } catch (ClassNotFoundException e) { + } + assumeTrue("QtWebEngine not available.", found); + assumeTrue("global share context not available.", QOpenGLContext.globalShareContext()!=null); + QtWebEngine.initialize(); + QtUtilities.initializePackage("io.qt.quick"); + QtUtilities.loadQtLibrary("QuickControls2"); + } + + public static class UIController extends QObject { + @QtInvokable public void passWebView(Object obj) { + System.out.println("got " + obj.getClass().getName() + ": " + obj); + QApplication.quit(); + } + } + + @Test + public void test1() { + QQmlApplicationEngine engine = new QQmlApplicationEngine(); + engine.loadData(new QByteArray("import QtWebEngine 1.0\nWebEngineView{}")); + engine.setOutputWarningsToStandardError(true); + engine.warnings.connect(e -> System.out.println(e)); + QList rootObjects = engine.rootObjects(); + dump(rootObjects, 0); + } + + private static void dump(QList objects, int nestedLevel) { + final StringBuilder suffix = new StringBuilder(); + for (int i = 0; i < nestedLevel; i++) { + suffix.append(" "); + } + for (QObject obj : objects) { + System.out.println(suffix + "| " + obj.getClass().getName() + ": " + obj); + obj.metaObject().methods().forEach(mtd -> { +// System.out.println(suffix + " "+mtd.cppMethodSignature()); + if(mtd.methodType()==QMetaMethod.MethodType.Signal) { + System.out.println(suffix + " "+mtd.toSignal(obj)); + } + }); + dump(obj.children(), nestedLevel+1); + } + } + + public static void main(String args[]) { + org.junit.runner.JUnitCore.main(TestWebEngineQuickQt5.class.getName()); + } +} diff --git a/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt6.java b/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt6.java new file mode 100644 index 00000000..7269916b --- /dev/null +++ b/src/java/autotest/io/qt/autotests/TestWebEngineQuickQt6.java @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2009-2022 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved. +** +** This file is part of Qt Jambi. +** +** ** $BEGIN_LICENSE$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** $END_LICENSE$ +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ +package io.qt.autotests; + +import static org.junit.Assume.assumeTrue; +import org.junit.*; + +import org.junit.BeforeClass; +import org.junit.Test; + +import io.qt.QtInvokable; +import io.qt.QtUtilities; +import io.qt.core.*; +import io.qt.gui.*; +import io.qt.qml.*; +import io.qt.quick.*; +import io.qt.webengine.core.*; +import io.qt.webengine.quick.*; +import io.qt.widgets.*; + +public class TestWebEngineQuickQt6 extends ApplicationInitializer { + + @BeforeClass + public static void testInitialize() throws Exception { + QtUtilities.initializePackage("io.qt.webengine.quick"); + QCoreApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts); + ApplicationInitializer.testInitializeWithGui(); + assumeTrue("A screen is required to create a window.", QGuiApplication.primaryScreen()!=null); + boolean found = false; + try { + Class cls = Class.forName("io.qt.webengine.quick.QtWebEngineQuick"); + if (cls != null) + found = true; + } catch (ClassNotFoundException e) { + } + assumeTrue("QWebEngineView not available.", found); + assumeTrue("global share context not available.", QOpenGLContext.globalShareContext()!=null); + QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.PluginsEnabled, true); + QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.DnsPrefetchEnabled, true); + QWebEngineProfile.defaultProfile().setPersistentCookiesPolicy(QWebEngineProfile.PersistentCookiesPolicy.AllowPersistentCookies); + QtWebEngineQuick.initialize(); + QtUtilities.initializePackage("io.qt.quick"); + QtUtilities.loadQtLibrary("QuickControls2"); + } + + @Test + public void test1() { + QQmlApplicationEngine engine = new QQmlApplicationEngine(); + engine.loadData(new QByteArray("import QtWebEngine\nWebEngineView{}")); + QList rootObjects = engine.rootObjects(); + Assert.assertTrue(rootObjects.get(0)!=null); + dump(rootObjects, 0); + QObject webEngineView = rootObjects.get(0); + QObject settings = (QObject)webEngineView.property("settings"); + QObject userScripts = (QObject)webEngineView.property("userScripts"); + QWebEngineSettings _settings = QtWebEngineQuick.toWebEngineSettings(settings); + QWebEngineScriptCollection _userScripts = QtWebEngineQuick.toWebEngineScriptCollection(userScripts); + Assert.assertTrue(_settings!=null); + Assert.assertTrue(_userScripts!=null); + boolean value = QVariant.toBoolean(settings.property("autoLoadImages")); + _settings.setAttribute(QWebEngineSettings.WebAttribute.AutoLoadImages, !value); + Assert.assertEquals(!value, settings.property("autoLoadImages")); + settings.setProperty("autoLoadImages", value); + Assert.assertEquals(value, _settings.testAttribute(QWebEngineSettings.WebAttribute.AutoLoadImages)); + Assert.assertEquals(0, _userScripts.count()); + _userScripts.insert(new QWebEngineScript()); + Assert.assertEquals(1, _userScripts.count()); + userScripts.metaObject().method("insert", QWebEngineScript.class).invoke(userScripts, new QWebEngineScript()); + Assert.assertEquals(2, _userScripts.count()); + _settings.dispose(); + Assert.assertFalse(settings.isDisposed()); + settings.property("autoLoadImages");// should not crash + engine.dispose(); + Assert.assertTrue(webEngineView.isDisposed()); + Assert.assertTrue(userScripts.isDisposed()); + Assert.assertTrue(_userScripts.isDisposed()); + Assert.assertTrue(settings.isDisposed()); + } + + private static void dump(QList objects, int nestedLevel) { + StringBuilder suffix = new StringBuilder(); + for (int i = 0; i < nestedLevel; i++) { + suffix.append(" "); + } + for (QObject obj : objects) { +// System.out.println(suffix + "| " + obj.getClass().getName() + ": " + obj); + obj.metaObject().methods().forEach(mtd -> { + if(mtd.methodType()==QMetaMethod.MethodType.Signal) { + mtd.toSignal(obj); // must not crash for nonconstructible metatypes + } + }); + dump(obj.children(), nestedLevel+1); + } + } + + public static void main(String args[]) { + org.junit.runner.JUnitCore.main(TestWebEngineQuickQt6.class.getName()); + } +} diff --git a/src/java/autotest/io/qt/autotests/TestWebEngineWidgets.java b/src/java/autotest/io/qt/autotests/TestWebEngineWidgets.java index 8148fad1..5378a0b2 100644 --- a/src/java/autotest/io/qt/autotests/TestWebEngineWidgets.java +++ b/src/java/autotest/io/qt/autotests/TestWebEngineWidgets.java @@ -30,21 +30,28 @@ import static org.junit.Assume.assumeTrue; +import java.util.function.Consumer; + import org.junit.BeforeClass; import org.junit.Test; import io.qt.QtUtilities; -import io.qt.core.*; -import io.qt.gui.*; +import io.qt.core.QCoreApplication; +import io.qt.core.QTimer; +import io.qt.core.QUrl; +import io.qt.core.Qt; +import io.qt.gui.QGuiApplication; +import io.qt.gui.QOpenGLContext; import io.qt.webengine.core.*; import io.qt.webengine.widgets.*; -import io.qt.widgets.*; +import io.qt.widgets.QApplication; public class TestWebEngineWidgets extends ApplicationInitializer { @BeforeClass public static void testInitialize() throws Exception { QtUtilities.initializePackage("io.qt.webengine.widgets"); + QCoreApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts); ApplicationInitializer.testInitializeWithWidgets(); assumeTrue("A screen is required to create a window.", QGuiApplication.primaryScreen()!=null); boolean found = false; @@ -56,13 +63,13 @@ public static void testInitialize() throws Exception { } assumeTrue("QWebEngineView not available.", found); assumeTrue("global share context not available.", QOpenGLContext.globalShareContext()!=null); + QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.PluginsEnabled, true); + QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.DnsPrefetchEnabled, true); + QWebEngineProfile.defaultProfile().setPersistentCookiesPolicy(QWebEngineProfile.PersistentCookiesPolicy.AllowPersistentCookies); } @Test public void test() { - QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.PluginsEnabled, true); - QWebEngineProfile.defaultProfile().settings().setAttribute(QWebEngineSettings.WebAttribute.DnsPrefetchEnabled, true); - QWebEngineProfile.defaultProfile().setPersistentCookiesPolicy(QWebEngineProfile.PersistentCookiesPolicy.AllowPersistentCookies); QWebEngineView webView = new QWebEngineView(); webView.load(new QUrl("http://www.qt.io")); webView.loadProgress.connect(progress -> { if(progress>95) webView.close(); }); @@ -72,6 +79,24 @@ public void test() { webView.dispose(); } + @Test + public void testRunJavaScript() { + QWebEngineView view = new QWebEngineView(); + QWebEnginePage page = new QWebEnginePage(view); + view.setPage(page); + page.load(new QUrl("http://info.cern.ch/")); + page.runJavaScript("window", new Consumer() { + @Override + public void accept(Object o) { + System.out.println("test " + o); // always creates a crash if you interact with this object in any way + view.close(); + } + }); + view.show(); + QTimer.singleShot(25000, QApplication::quit); + QApplication.exec(); + } + public static void main(String args[]) { org.junit.runner.JUnitCore.main(TestWebEngineWidgets.class.getName()); } diff --git a/src/java/autotest/io/qt/autotests/resources.jar b/src/java/autotest/io/qt/autotests/resources.jar index e738ce5a3dd5373233fb8514dc4312f3ca287413..d7f65861e126a416c11f2d3f07f145c1d5034c0a 100644 GIT binary patch delta 126686 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πHCSKa3Pk$sSkD=(Tz|PrW{pFY>+(%E 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%0Dy%3$EQPKIJPK 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 G!2bY(xo4{Y delta 131 zcmbRAopbI&rVTIKH*c9O!MvThlu3hm@|M{`(`_r5G$uco%|HER1(P3BTIciw6-+AA zV=I|-r*l*>sWJcUVwi4N#T3Y#*9~UKPG3~TWXOC5#^Wes;+g)xib;#vpod|)PBoJS ab1smPUd<%S$HTzGFrS%$;YAMv5C8y*Fe-rn diff --git a/src/java/qtjambi-modules/modules.xml b/src/java/qtjambi-modules/modules.xml index 91fee9da..eea34e14 100644 --- a/src/java/qtjambi-modules/modules.xml +++ b/src/java/qtjambi-modules/modules.xml @@ -354,12 +354,12 @@ - - - - - - + + + + + + diff --git a/src/java/qtjambi-modules/qtjambi/main/io/qt/core/QMetaObject.java b/src/java/qtjambi-modules/qtjambi/main/io/qt/core/QMetaObject.java index a9587756..d55d6313 100644 --- a/src/java/qtjambi-modules/qtjambi/main/io/qt/core/QMetaObject.java +++ b/src/java/qtjambi-modules/qtjambi/main/io/qt/core/QMetaObject.java @@ -44,7 +44,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.TreeMap; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; @@ -65,8 +64,8 @@ import io.qt.QtThreadAffineInterface; import io.qt.QtUninvokable; import io.qt.QtUtilities; -import io.qt.internal.QtJambiPropertyInfo; import io.qt.internal.QtJambiInternal; +import io.qt.internal.QtJambiPropertyInfo; import io.qt.internal.QtJambiSignals; /** @@ -450,6 +449,13 @@ public QMetaProperty property(String name) { @QtUninvokable private native QMetaProperty property(long metaObjectPointer, String name); + @QtUninvokable + public QMetaProperty property(int index) { + return propertyByIndex(this.metaObjectPointer, index); + } + @QtUninvokable + private native QMetaProperty propertyByIndex(long metaObjectPointer, int index); + @QtUninvokable public QList enumerators() { return enumerators(this.metaObjectPointer); @@ -471,6 +477,13 @@ public io.qt.core.QMetaEnum enumerator(String name) { @QtUninvokable private static native QMetaEnum enumerator(long metaObjectPointer, String name); + @QtUninvokable + public io.qt.core.QMetaEnum enumerator(int index) { + return enumeratorByIndex(this.metaObjectPointer, index); + } + @QtUninvokable + private static native QMetaEnum enumeratorByIndex(long metaObjectPointer, int index); + @QtUninvokable public static void connectSlotsByName(QObject object) { connectSlotsByName(QtJambi_LibraryUtilities.internal.checkedNativeId(object)); @@ -496,7 +509,7 @@ static String internalNameOfType(Class cls) { } @QtUninvokable - QMetaMethod methodByIndex(int methodIndex) { + public final QMetaMethod method(int methodIndex) { return methodByIndex(metaObjectPointer, methodIndex); } @QtUninvokable @@ -595,6 +608,13 @@ public QMetaMethod constructor(Class... parameterTypes) { @QtUninvokable private native QMetaMethod constructor(long metaObjectPointer, String normalizedSignature); + @QtUninvokable + public QMetaMethod constructor(int index) { + return constructorByIndex(metaObjectPointer, index); + } + @QtUninvokable + private native QMetaMethod constructorByIndex(long metaObjectPointer, int index); + @QtUninvokable public final QList constructors(){ return constructors(metaObjectPointer); @@ -10211,8 +10231,8 @@ public static AbstractSignal findSignal(QObject sender, String name, Class... @QtUninvokable private static AbstractSignal findSignalImpl(QObject sender, String name, Class... types){ - QtJambi_LibraryUtilities.internal.checkedNativeId(Objects.requireNonNull(sender)); - return QtJambiInternal.findSignal(sender, name, types); + QMetaMethod signal = sender.metaObject().method(name, types); + return signal.toSignal(sender); } @QtUninvokable diff --git a/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiInternal.java b/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiInternal.java index 9636b674..b879ed6e 100644 --- a/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiInternal.java +++ b/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiInternal.java @@ -111,6 +111,7 @@ import io.qt.core.QHash; import io.qt.core.QList; import io.qt.core.QMap; +import io.qt.core.QMetaMethod; import io.qt.core.QMetaObject; import io.qt.core.QMetaObject.Method3; import io.qt.core.QMetaObject.Method4; @@ -1854,44 +1855,47 @@ private static QMetaObject.DisposedSignal takeSignalOnDispose(NativeLink nativeL return disposedSignals.remove(nativeLink); } - public static QMetaObject.AbstractSignal findSignal(Object sender, String name, - Class... types) { - for (Class cls = QtJambiInternal.getClass(sender); cls!=null && cls!=Object.class; cls = cls.getSuperclass()) { - try { - Field f = cls.getDeclaredField(name); - if (!java.lang.reflect.Modifier.isStatic(f.getModifiers())) { - if (QMetaObject.AbstractSignal.class.isAssignableFrom(f.getType())) { - AbstractSignal signal = (AbstractSignal) fetchField(sender, f); - if (signal != null) { - if (signal.matchTypes(types)) { - return (QMetaObject.AbstractSignal) signal; - } - } - } else if (QtJambiSignals.AbstractMultiSignal.class.isAssignableFrom(f.getType())) { - QtJambiSignals.AbstractMultiSignal multiSignal = (QtJambiSignals.AbstractMultiSignal) fetchField(sender, f); - for (AbstractSignal signal : multiSignal.signals()) { - if (signal.matchTypes(types)) { - return (QMetaObject.AbstractSignal) signal; - } + @SuppressWarnings("unlikely-arg-type") + public static QMetaObject.AbstractSignal findSignal(QObject sender, QMetaMethod method) { + int methodIndex = method.methodIndex(); + Class cls = method.enclosingMetaObject().type(); + if(cls==null) + cls = getClass(sender); + if(cls!=null) { + while(cls!=null && cls!=Object.class) { + try { + Field f = cls.getDeclaredField(method.name().toString()); + if (!java.lang.reflect.Modifier.isStatic(f.getModifiers())) { + if (AbstractSignal.class.isAssignableFrom(f.getType())) { + try { + AbstractSignal signal = (AbstractSignal) fetchField(sender, f); + if (signal != null) { + if(signal.methodIndex()==methodIndex) + return (QMetaObject.AbstractSignal) signal; + if(method.name().equals(signal.name()) && signal.argumentTypes().equals(method.parameterClassTypes())) { + return (QMetaObject.AbstractSignal) signal; + } + } + }catch(Throwable t) {} + } else if (QtJambiSignals.AbstractMultiSignal.class.isAssignableFrom(f.getType())) { + try { + QtJambiSignals.AbstractMultiSignal multiSignal = (QtJambiSignals.AbstractMultiSignal) fetchField(sender, f); + for (AbstractSignal signal : multiSignal.signals()) { + if (signal.methodIndex()==methodIndex) { + return (QMetaObject.AbstractSignal) signal; + } + } + }catch(Throwable t) {} } } - } - } catch (NoSuchFieldException | SecurityException t) { + }catch(Throwable t) {} + cls = cls.getSuperclass(); } } - if (sender instanceof QObject) { - List listOfExtraSignal = getListOfExtraSignal( - internalAccess.nativeId((QObject) sender)); - for (AbstractSignal signal : listOfExtraSignal) { - if (signal.name().equals(name) && signal.matchTypes(types)) { - return (QMetaObject.AbstractSignal) signal; - } - } - } - return null; + return getExtraSignal(internalAccess.nativeId(sender), internalAccess.nativeId(method)); } - - native static List getListOfExtraSignal(long sender__id); + + native static QMetaObject.AbstractSignal getExtraSignal(long sender__id, long method__id); private static interface Check { void check() throws Exception; diff --git a/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiSignals.java b/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiSignals.java index dc0a75c8..7fe44f7f 100644 --- a/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiSignals.java +++ b/src/java/qtjambi-modules/qtjambi/main/io/qt/internal/QtJambiSignals.java @@ -2387,18 +2387,26 @@ private static Match matches(boolean isNativeConnect, SignalParameterType sentTy || sentType.genericType instanceof Class || sentType.genericType==receivedType.genericType) { return (sentType.isReference==receivedType.isReference) && (sentType.isPointer==receivedType.isPointer) ? Match.NativeMatch : Match.JavaMatch; - }else if(sentType.genericType instanceof ParameterizedType && receivedType.genericType instanceof ParameterizedType) { + }else if(sentType.genericType instanceof ParameterizedType) { ParameterizedType sentParamType = (ParameterizedType)sentType.genericType; - ParameterizedType receivedParamType = (ParameterizedType)receivedType.genericType; - Type[] sentArgs = sentParamType.getActualTypeArguments(); - Type[] receivedArgs = receivedParamType.getActualTypeArguments(); - if(sentArgs.length!=receivedArgs.length) - return Match.NoMatch; - for (int i = 0; i < receivedArgs.length; i++) { - if(!matches(isNativeConnect, sentArgs[i], receivedArgs[i])) - return Match.NoMatch; - } - return (sentType.isReference==receivedType.isReference) && (sentType.isPointer==receivedType.isPointer) ? Match.NativeMatch : Match.JavaMatch; + if(receivedType.genericType instanceof ParameterizedType) { + ParameterizedType receivedParamType = (ParameterizedType)receivedType.genericType; + Type[] sentArgs = sentParamType.getActualTypeArguments(); + Type[] receivedArgs = receivedParamType.getActualTypeArguments(); + if(sentArgs.length!=receivedArgs.length) + return Match.NoMatch; + for (int i = 0; i < receivedArgs.length; i++) { + if(!matches(isNativeConnect, sentArgs[i], receivedArgs[i])) + return Match.NoMatch; + } + return (sentType.isReference==receivedType.isReference) && (sentType.isPointer==receivedType.isPointer) ? Match.NativeMatch : Match.JavaMatch; + }else if(receivedType.genericType instanceof Class){ + if(sentParamType.getRawType()==receivedType.genericType || ((Class)receivedType.genericType).isAssignableFrom((Class)sentParamType.getRawType())) { + return Match.JavaMatch; + } + }else if(receivedType.genericType instanceof TypeVariable) { + return Match.JavaMatch; + } }else if(sentType.genericType instanceof TypeVariable) { // TypeVariable sentVarType = (TypeVariable)sentType.genericType; // if(receivedType.genericType instanceof TypeVariable) { diff --git a/src/java/qtjambi-plugins/plugins.xml b/src/java/qtjambi-plugins/plugins.xml index 163c59e3..6bb298b5 100644 --- a/src/java/qtjambi-plugins/plugins.xml +++ b/src/java/qtjambi-plugins/plugins.xml @@ -3,7 +3,7 @@ - + @@ -27,14 +27,14 @@ - + - + @@ -62,7 +62,7 @@ - + @@ -92,20 +92,25 @@ + + + + + @@ -211,61 +216,6 @@ - - - - - - - - - - - - - - - - @@ -274,9 +224,52 @@ - - - + + + + + + + + + + + + + + + + + + create empty ${deploymentdir}/${moduledash}-native-android-common-${qtjambi.jar.version}-javadoc.jar + + + + + + + + + + + + + + + + + + + + + + + + @@ -313,7 +306,10 @@ jar-includes=${jar-includes} - + + + + @@ -420,7 +416,7 @@ - + @@ -445,21 +441,14 @@ - - - - - - - - - - - - - - - + + + + + + + + diff --git a/src/java/qtjambi-qml/qml.xml b/src/java/qtjambi-qml/qml.xml index 720c4377..36d41b99 100644 --- a/src/java/qtjambi-qml/qml.xml +++ b/src/java/qtjambi-qml/qml.xml @@ -149,10 +149,14 @@ + + + + @@ -162,6 +166,8 @@ + + @@ -172,16 +178,19 @@ + + - + + @@ -192,10 +201,10 @@ - + - + @@ -252,7 +261,7 @@ - + @@ -261,5 +270,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jar-includes=${qmltargetdir}/${subdir}/${jar-includes} + + + + + + + + + + + + + diff --git a/www/Android.md b/www/Android.md index 30c38120..6ef529ed 100644 --- a/www/Android.md +++ b/www/Android.md @@ -68,8 +68,8 @@ Therefore, open the file `app/build.gradle`. Add the following lines to the `dependencies` section (for ABI arm64-v8a): ```gradle - implementation 'io.qtjambi:qtjambi:6.3.3' - implementation 'io.qtjambi:qtjambi-native-android-arm64:6.3.3' + implementation 'io.qtjambi:qtjambi:6.3.4' + implementation 'io.qtjambi:qtjambi-native-android-arm64:6.3.4' implementation files('qt-lib-core-native-android-arm64-6.3.1.jar', 'qt-lib-core-native-android-common-6.3.1.jar', 'qt-lib-gui-native-android-arm64-6.3.1.jar', diff --git a/www/Characteristics-of-QtJambi.md b/www/Characteristics-of-QtJambi.md index 8cc82d6d..bfe0bc85 100644 --- a/www/Characteristics-of-QtJambi.md +++ b/www/Characteristics-of-QtJambi.md @@ -947,7 +947,7 @@ device.close(); ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-uic-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-uic-6.3.4.jar -m qtjambi.uic --output=src --package=com.myapplication.widgets com/myapplication/widgets/mainwindow.ui ``` @@ -955,7 +955,7 @@ Alternative way to call it: ``` shell java -Djava.library.path= - -cp qtjambi-6.3.3.jar:qtjambi-uic-6.3.3.jar + -cp qtjambi-6.3.4.jar:qtjambi-uic-6.3.4.jar io.qt.uic.Main --output=src --package=com.myapplication.widgets com/myapplication/widgets/mainwindow.ui ``` @@ -1199,7 +1199,7 @@ and *QtJambi* libraries: ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer plugin --class-name=my.company.CustomImageIOPlugin --class-path=my-company-library.jar @@ -1211,7 +1211,7 @@ Alternative way to call it: ``` shell java -Djava.library.path= - -cp qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -cp qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar io.qt.qtjambi.deployer.Main plugin --class-name=my.company.CustomImageIOPlugin --class-path=my-company-library.jar @@ -1238,7 +1238,7 @@ This is especially necessary on macOS (arm64). ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer plugin --class-name=my.company.CustomImageIOPlugin --class-path=my-company-library.jar diff --git a/www/How-to-bundle-Qt-libraries.md b/www/How-to-bundle-Qt-libraries.md index 6c05200b..dcd4cd36 100644 --- a/www/How-to-bundle-Qt-libraries.md +++ b/www/How-to-bundle-Qt-libraries.md @@ -10,7 +10,7 @@ on *Linux* and *macOS*. ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer qt ``` @@ -18,7 +18,7 @@ Alternative way to call it: ``` shell java -Djava.library.path= - -cp qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -cp qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar io.qt.qtjambi.deployer.Main qt ``` diff --git a/www/How-to-deploy-QtJambi-applications.md b/www/How-to-deploy-QtJambi-applications.md index 6ca49481..9912cc7a 100644 --- a/www/How-to-deploy-QtJambi-applications.md +++ b/www/How-to-deploy-QtJambi-applications.md @@ -7,7 +7,7 @@ along with platform-dependent **qtjambi-deployer-native-X.jar** for all platform In the examples below, we assume you created an application in a jar file `my-company-app.jar` with main class `my.company.app.Main` -depending on `qtjambi-6.3.3.jar`. +depending on `qtjambi-6.3.4.jar`. Call the app deployer as shown below. Make sure the library path points to the *Qt* libraries being `bin` on *Windows* and `lib` @@ -15,7 +15,7 @@ on *Linux* and *macOS*. ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer app ``` @@ -23,7 +23,7 @@ Alternative way to call it: ``` shell java -Djava.library.path= - -cp qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -cp qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar io.qt.qtjambi.deployer.Main app ``` @@ -70,8 +70,8 @@ installation directory | plugins | ... (platforms, styles and others) | lib - | qtjambi-6.3.3.jar - | qtjambi-native-windows-x64-6.3.3.jar + | qtjambi-6.3.4.jar + | qtjambi-native-windows-x64-6.3.4.jar | my-company-app.jar | jre | ... (Java Runtime Environment) @@ -82,11 +82,11 @@ append the following commands to the above listed *QtJambi deployer* command: ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer app --application=MyCompanyApp --executable=utilities/QtJambiLauncher.exe - --class-path=../lib/my-company-app.jar:../lib/qtjambi-6.3.3.jar:../lib/qtjambi-native-windows-x64-6.3.3.jar + --class-path=../lib/my-company-app.jar:../lib/qtjambi-6.3.4.jar:../lib/qtjambi-native-windows-x64-6.3.4.jar --library-path=. --jvm-path=../jre --main-class=my.company.app.Main @@ -111,8 +111,8 @@ installation directory | libQt6Core.so[.6.3.0] | libQt6Gui.so[.6.3.0] | libQt6Widgets.so[.6.3.0] - | qtjambi-6.3.3.jar - | qtjambi-native-linux-x64-6.3.3.jar + | qtjambi-6.3.4.jar + | qtjambi-native-linux-x64-6.3.4.jar | my-company-app.jar | jre | ... (Java Runtime Environment) @@ -123,11 +123,11 @@ the following commands to the above listed *QtJambi deployer* command: ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer app --application=MyCompanyApp --executable=utilities/QtJambiLauncher - --class-path=lib/my-company-app.jar:lib/qtjambi-6.3.3.jar:lib/qtjambi-native-linux-x64-6.3.3.jar + --class-path=lib/my-company-app.jar:lib/qtjambi-6.3.4.jar:lib/qtjambi-native-linux-x64-6.3.4.jar --library-path=lib --jvm-path=jre --main-class=my.company.app.Main @@ -155,8 +155,8 @@ installation directory | QtGui.framework | QtWidgets.framework | lib - | qtjambi-6.3.3.jar - | qtjambi-native-macos-6.3.3.jar + | qtjambi-6.3.4.jar + | qtjambi-native-macos-6.3.4.jar | my-company-app.jar | jre | ... (Java Runtime Environment) @@ -170,11 +170,11 @@ append the following commands to the above listed *QtJambi deployer* command: ``` shell java -Djava.library.path= - -p qtjambi-6.3.3.jar:qtjambi-deployer-6.3.3.jar + -p qtjambi-6.3.4.jar:qtjambi-deployer-6.3.4.jar -m qtjambi.deployer app --application=MyCompanyApp --executable=utilities/QtJambiLauncher.app - --class-path=../lib/my-company-app.jar:../lib/qtjambi-6.3.3.jar:../lib/qtjambi-native-macos-6.3.3.jar + --class-path=../lib/my-company-app.jar:../lib/qtjambi-6.3.4.jar:../lib/qtjambi-native-macos-6.3.4.jar --library-path=../Frameworks --jvm-path=../jre --main-class=my.company.app.Main diff --git a/www/How-to-develop-Qt-in-Java.md b/www/How-to-develop-Qt-in-Java.md index 6c0dab7f..4909a63a 100644 --- a/www/How-to-develop-Qt-in-Java.md +++ b/www/How-to-develop-Qt-in-Java.md @@ -13,7 +13,7 @@ to your project: $VERSION ``` -(exchange `$VERSION` either by `5.15.8`, `6.2.6` or by `6.3.3`). +(exchange `$VERSION` either by `5.15.9`, `6.2.7` or by `6.3.4`). Otherwise, download QtJambi JAR file from [Maven Central Repository](https://search.maven.org/artifact/io.qtjambi/qtjambi/). Find the [list of all available QtJambi modules](www/Modules.md). @@ -34,7 +34,7 @@ public class Test { Compile the file: ``` powershell -javac -cp qtjambi-6.3.3.jar Test.java +javac -cp qtjambi-6.3.4.jar Test.java ``` For execution you need the platform dependent binaries of *QtJambi*. For @@ -52,13 +52,13 @@ macOS) or the Java runtime property **java.library.path**. The example program can be executed this way: ``` powershell -java -cp qtjambi-6.3.3.jar;qtjambi-native-windows-x64-6.3.3.jar;. -Djava.library.path=C:\Qt\6.2.0\msvc2019_64\bin Test +java -cp qtjambi-6.3.4.jar;qtjambi-native-windows-x64-6.3.4.jar;. -Djava.library.path=C:\Qt\6.2.0\msvc2019_64\bin Test ``` On *macOS* you need to use the start parameter `-XstartOnFirstThread`: ``` bash -java -XstartOnFirstThread -cp qtjambi-6.3.3.jar:qtjambi-native-windows-x64-6.3.3.jar:. -Djava.library.path=C:\Qt\6.2.0\msvc2019_64\bin Test +java -XstartOnFirstThread -cp qtjambi-6.3.4.jar:qtjambi-native-windows-x64-6.3.4.jar:. -Djava.library.path=C:\Qt\6.2.0\msvc2019_64\bin Test ``` In general, you can start learning how to use Qt in Java [as it is @@ -73,11 +73,11 @@ here](How-to-deploy-QtJambi-applications.md). [Read more about developing applications for Android](Android.md). See [QtJambi 5.15 API Reference -Documentation](https://doc.qtjambi.io/5.15.8/), +Documentation](https://doc.qtjambi.io/5.15.9/), [QtJambi 6.2 API Reference -Documentation](https://doc.qtjambi.io/6.2.6/) +Documentation](https://doc.qtjambi.io/6.2.7/) and [QtJambi 6.3 API Reference -Documentation](https://doc.qtjambi.io/6.3.3/) +Documentation](https://doc.qtjambi.io/6.3.4/) ## Useful Java System Properties for QtJambi diff --git a/www/Modules.md b/www/Modules.md index 275117bd..5f24ccc8 100644 --- a/www/Modules.md +++ b/www/Modules.md @@ -11,7 +11,7 @@ QtJambi is available for Qt5 and Qt6. All modules are published as Maven Artifac $VERSION ``` -Here, exchange `$VERSION` either by `5.15.8`, by `6.2.6` or by `6.3.3`. Exchange `$MODULE` by *QtJambi* module name as listed below. +Here, exchange `$VERSION` either by `5.15.9`, by `6.2.7` or by `6.3.4`. Exchange `$MODULE` by *QtJambi* module name as listed below. Alternatively, you can download corresponding QtJambi modules as JAR file from [Maven Central Repository](https://search.maven.org/search?q=io.qtjambi). @@ -20,1549 +20,1549 @@ Native components are avaiable for Windows (x64), Linux (x64), macOS (x64 and ar ## QtJambi for Qt 6.3 -QtJambi 6.3.3 requires Qt 6.3.x whereas x can be any patch version. +QtJambi 6.3.4 requires Qt 6.3.x whereas x can be any patch version. Following Qt 6.3 modules are provided by QtJambi: ### Qt6 Essentials * [QtCore](https://doc.qt.io/qt-6/qtcore-index.html), [QtGui](https://doc.qt.io/qt-6/qtgui-index.html) and [QtWidgets](https://doc.qt.io/qt-6/qtwidgets-index.html) in module **qtjambi**: - * [**qtjambi-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/6.3.3/jar) - * [**qtjambi-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/6.3.3/jar) - * [**qtjambi-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/6.3.3/jar) - * [**qtjambi-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/6.3.3/jar) - * [**qtjambi-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/6.3.3/jar) - * [**qtjambi-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/6.3.3/jar) - * [**qtjambi-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/6.3.3/jar) - * [**qtjambi-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/6.3.3/jar) + * [**qtjambi-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/6.3.4/jar) + * [**qtjambi-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/6.3.4/jar) + * [**qtjambi-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/6.3.4/jar) + * [**qtjambi-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/6.3.4/jar) + * [**qtjambi-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/6.3.4/jar) + * [**qtjambi-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/6.3.4/jar) + * [**qtjambi-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/6.3.4/jar) + * [**qtjambi-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/6.3.4/jar) * [QtDBus](https://doc.qt.io/qt-6/qtdbus-index.html) in module **qtjambi-dbus**: - * [**qtjambi-dbus-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/6.3.3/jar) - * [**qtjambi-dbus-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/6.3.3/jar) - * [**qtjambi-dbus-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/6.3.3/jar) - * [**qtjambi-dbus-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/6.3.3/jar) - * [**qtjambi-dbus-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/6.3.3/jar) - * [**qtjambi-dbus-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/6.3.3/jar) - * [**qtjambi-dbus-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/6.3.3/jar) - * [**qtjambi-dbus-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/6.3.3/jar) + * [**qtjambi-dbus-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/6.3.4/jar) + * [**qtjambi-dbus-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/6.3.4/jar) + * [**qtjambi-dbus-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/6.3.4/jar) + * [**qtjambi-dbus-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/6.3.4/jar) + * [**qtjambi-dbus-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/6.3.4/jar) + * [**qtjambi-dbus-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/6.3.4/jar) + * [**qtjambi-dbus-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/6.3.4/jar) + * [**qtjambi-dbus-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/6.3.4/jar) * [QtNetwork](https://doc.qt.io/qt-6/qtnetwork-index.html) in module **qtjambi-network**: - * [**qtjambi-network-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/6.3.3/jar) - * [**qtjambi-network-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/6.3.3/jar) - * [**qtjambi-network-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/6.3.3/jar) - * [**qtjambi-network-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/6.3.3/jar) - * [**qtjambi-network-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/6.3.3/jar) - * [**qtjambi-network-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/6.3.3/jar) - * [**qtjambi-network-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/6.3.3/jar) - * [**qtjambi-network-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/6.3.3/jar) + * [**qtjambi-network-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/6.3.4/jar) + * [**qtjambi-network-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/6.3.4/jar) + * [**qtjambi-network-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/6.3.4/jar) + * [**qtjambi-network-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/6.3.4/jar) + * [**qtjambi-network-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/6.3.4/jar) + * [**qtjambi-network-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/6.3.4/jar) + * [**qtjambi-network-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/6.3.4/jar) + * [**qtjambi-network-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/6.3.4/jar) * [QtQml](https://doc.qt.io/qt-6/qtqml-index.html) in module **qtjambi-qml**: - * [**qtjambi-qml-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/6.3.3/jar) - * [**qtjambi-qml-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/6.3.3/jar) - * [**qtjambi-qml-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/6.3.3/jar) - * [**qtjambi-qml-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/6.3.3/jar) - * [**qtjambi-qml-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/6.3.3/jar) - * [**qtjambi-qml-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/6.3.3/jar) - * [**qtjambi-qml-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/6.3.3/jar) - * [**qtjambi-qml-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/6.3.3/jar) + * [**qtjambi-qml-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/6.3.4/jar) + * [**qtjambi-qml-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/6.3.4/jar) + * [**qtjambi-qml-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/6.3.4/jar) + * [**qtjambi-qml-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/6.3.4/jar) + * [**qtjambi-qml-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/6.3.4/jar) + * [**qtjambi-qml-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/6.3.4/jar) + * [**qtjambi-qml-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/6.3.4/jar) + * [**qtjambi-qml-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/6.3.4/jar) * [QtQuick](https://doc.qt.io/qt-6/qtquick-index.html) in module **qtjambi-quick**: - * [**qtjambi-quick-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/6.3.3/jar) - * [**qtjambi-quick-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/6.3.3/jar) - * [**qtjambi-quick-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/6.3.3/jar) - * [**qtjambi-quick-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/6.3.3/jar) - * [**qtjambi-quick-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/6.3.3/jar) - * [**qtjambi-quick-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/6.3.3/jar) - * [**qtjambi-quick-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/6.3.3/jar) - * [**qtjambi-quick-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/6.3.3/jar) + * [**qtjambi-quick-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/6.3.4/jar) + * [**qtjambi-quick-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/6.3.4/jar) + * [**qtjambi-quick-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/6.3.4/jar) + * [**qtjambi-quick-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/6.3.4/jar) + * [**qtjambi-quick-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/6.3.4/jar) + * [**qtjambi-quick-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/6.3.4/jar) + * [**qtjambi-quick-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/6.3.4/jar) + * [**qtjambi-quick-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/6.3.4/jar) * [QtQuickControls](https://doc.qt.io/qt-6/qtquickcontrols-index.html) in module **qtjambi-quickcontrols**: - * [**qtjambi-quickcontrols-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/6.3.3/jar) - * [**qtjambi-quickcontrols-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/6.3.3/jar) - * [**qtjambi-quickcontrols-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/6.3.3/jar) - * [**qtjambi-quickcontrols-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/6.3.3/jar) - * [**qtjambi-quickcontrols-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/6.3.3/jar) - * [**qtjambi-quickcontrols-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/6.3.3/jar) - * [**qtjambi-quickcontrols-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/6.3.3/jar) - * [**qtjambi-quickcontrols-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/6.3.3/jar) + * [**qtjambi-quickcontrols-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/6.3.4/jar) + * [**qtjambi-quickcontrols-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/6.3.4/jar) + * [**qtjambi-quickcontrols-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/6.3.4/jar) + * [**qtjambi-quickcontrols-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/6.3.4/jar) + * [**qtjambi-quickcontrols-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/6.3.4/jar) + * [**qtjambi-quickcontrols-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/6.3.4/jar) + * [**qtjambi-quickcontrols-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/6.3.4/jar) + * [**qtjambi-quickcontrols-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/6.3.4/jar) * [QtQuickTest](https://doc.qt.io/qt-6/qtquicktest-index.html) in module **qtjambi-quicktest**: - * [**qtjambi-quicktest-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/6.3.3/jar) - * [**qtjambi-quicktest-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/6.3.3/jar) - * [**qtjambi-quicktest-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/6.3.3/jar) - * [**qtjambi-quicktest-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/6.3.3/jar) - * [**qtjambi-quicktest-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/6.3.3/jar) - * [**qtjambi-quicktest-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/6.3.3/jar) - * [**qtjambi-quicktest-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/6.3.3/jar) - * [**qtjambi-quicktest-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/6.3.3/jar) + * [**qtjambi-quicktest-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/6.3.4/jar) + * [**qtjambi-quicktest-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/6.3.4/jar) + * [**qtjambi-quicktest-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/6.3.4/jar) + * [**qtjambi-quicktest-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/6.3.4/jar) + * [**qtjambi-quicktest-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/6.3.4/jar) + * [**qtjambi-quicktest-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/6.3.4/jar) + * [**qtjambi-quicktest-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/6.3.4/jar) + * [**qtjambi-quicktest-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/6.3.4/jar) * [QtTest](https://doc.qt.io/qt-6/qttest-index.html) in module **qtjambi-test**: - * [**qtjambi-test-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/6.3.3/jar) - * [**qtjambi-test-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/6.3.3/jar) - * [**qtjambi-test-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/6.3.3/jar) - * [**qtjambi-test-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/6.3.3/jar) - * [**qtjambi-test-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/6.3.3/jar) - * [**qtjambi-test-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/6.3.3/jar) - * [**qtjambi-test-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/6.3.3/jar) - * [**qtjambi-test-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/6.3.3/jar) + * [**qtjambi-test-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/6.3.4/jar) + * [**qtjambi-test-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/6.3.4/jar) + * [**qtjambi-test-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/6.3.4/jar) + * [**qtjambi-test-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/6.3.4/jar) + * [**qtjambi-test-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/6.3.4/jar) + * [**qtjambi-test-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/6.3.4/jar) + * [**qtjambi-test-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/6.3.4/jar) + * [**qtjambi-test-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/6.3.4/jar) ### Qt6 Add-Ons * [QtBluetooth](https://doc.qt.io/qt-6/qtbluetooth-index.html) in module **qtjambi-bluetooth**: - * [**qtjambi-bluetooth-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/6.3.3/jar) - * [**qtjambi-bluetooth-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/6.3.3/jar) - * [**qtjambi-bluetooth-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/6.3.3/jar) - * [**qtjambi-bluetooth-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/6.3.3/jar) - * [**qtjambi-bluetooth-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/6.3.3/jar) - * [**qtjambi-bluetooth-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/6.3.3/jar) - * [**qtjambi-bluetooth-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/6.3.3/jar) - * [**qtjambi-bluetooth-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/6.3.3/jar) + * [**qtjambi-bluetooth-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/6.3.4/jar) + * [**qtjambi-bluetooth-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/6.3.4/jar) + * [**qtjambi-bluetooth-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/6.3.4/jar) + * [**qtjambi-bluetooth-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/6.3.4/jar) + * [**qtjambi-bluetooth-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/6.3.4/jar) + * [**qtjambi-bluetooth-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/6.3.4/jar) + * [**qtjambi-bluetooth-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/6.3.4/jar) + * [**qtjambi-bluetooth-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/6.3.4/jar) * [QtCharts](https://doc.qt.io/qt-6/qtcharts-index.html) in module **qtjambi-charts**: - * [**qtjambi-charts-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/6.3.3/jar) - * [**qtjambi-charts-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/6.3.3/jar) - * [**qtjambi-charts-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/6.3.3/jar) - * [**qtjambi-charts-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/6.3.3/jar) - * [**qtjambi-charts-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/6.3.3/jar) - * [**qtjambi-charts-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/6.3.3/jar) - * [**qtjambi-charts-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/6.3.3/jar) - * [**qtjambi-charts-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/6.3.3/jar) + * [**qtjambi-charts-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/6.3.4/jar) + * [**qtjambi-charts-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/6.3.4/jar) + * [**qtjambi-charts-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/6.3.4/jar) + * [**qtjambi-charts-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/6.3.4/jar) + * [**qtjambi-charts-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/6.3.4/jar) + * [**qtjambi-charts-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/6.3.4/jar) + * [**qtjambi-charts-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/6.3.4/jar) + * [**qtjambi-charts-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/6.3.4/jar) * [QtDataVisualization](https://doc.qt.io/qt-6/qtdatavisualization-index.html) in module **qtjambi-datavisualization**: - * [**qtjambi-datavisualization-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/6.3.3/jar) - * [**qtjambi-datavisualization-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/6.3.3/jar) - * [**qtjambi-datavisualization-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/6.3.3/jar) - * [**qtjambi-datavisualization-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/6.3.3/jar) - * [**qtjambi-datavisualization-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/6.3.3/jar) - * [**qtjambi-datavisualization-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/6.3.3/jar) - * [**qtjambi-datavisualization-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/6.3.3/jar) - * [**qtjambi-datavisualization-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/6.3.3/jar) + * [**qtjambi-datavisualization-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/6.3.4/jar) + * [**qtjambi-datavisualization-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/6.3.4/jar) + * [**qtjambi-datavisualization-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/6.3.4/jar) + * [**qtjambi-datavisualization-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/6.3.4/jar) + * [**qtjambi-datavisualization-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/6.3.4/jar) + * [**qtjambi-datavisualization-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/6.3.4/jar) + * [**qtjambi-datavisualization-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/6.3.4/jar) + * [**qtjambi-datavisualization-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/6.3.4/jar) * [QtConcurrent](https://doc.qt.io/qt-6/qtconcurrent-index.html) in module **qtjambi-concurrent**: - * [**qtjambi-concurrent-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/6.3.3/jar) - * [**qtjambi-concurrent-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/6.3.3/jar) - * [**qtjambi-concurrent-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/6.3.3/jar) - * [**qtjambi-concurrent-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/6.3.3/jar) - * [**qtjambi-concurrent-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/6.3.3/jar) - * [**qtjambi-concurrent-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/6.3.3/jar) - * [**qtjambi-concurrent-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/6.3.3/jar) - * [**qtjambi-concurrent-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/6.3.3/jar) + * [**qtjambi-concurrent-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/6.3.4/jar) + * [**qtjambi-concurrent-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/6.3.4/jar) + * [**qtjambi-concurrent-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/6.3.4/jar) + * [**qtjambi-concurrent-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/6.3.4/jar) + * [**qtjambi-concurrent-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/6.3.4/jar) + * [**qtjambi-concurrent-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/6.3.4/jar) + * [**qtjambi-concurrent-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/6.3.4/jar) + * [**qtjambi-concurrent-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/6.3.4/jar) * [QtHelp](https://doc.qt.io/qt-6/qthelp-index.html) in module **qtjambi-help**: - * [**qtjambi-help-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/6.3.3/jar) - * [**qtjambi-help-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/6.3.3/jar) - * [**qtjambi-help-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/6.3.3/jar) - * [**qtjambi-help-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/6.3.3/jar) - * [**qtjambi-help-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/6.3.3/jar) - * [**qtjambi-help-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/6.3.3/jar) - * [**qtjambi-help-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/6.3.3/jar) - * [**qtjambi-help-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/6.3.3/jar) + * [**qtjambi-help-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/6.3.4/jar) + * [**qtjambi-help-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/6.3.4/jar) + * [**qtjambi-help-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/6.3.4/jar) + * [**qtjambi-help-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/6.3.4/jar) + * [**qtjambi-help-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/6.3.4/jar) + * [**qtjambi-help-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/6.3.4/jar) + * [**qtjambi-help-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/6.3.4/jar) + * [**qtjambi-help-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/6.3.4/jar) * [QtOpenGL](https://doc.qt.io/qt-6/qtopengl-index.html) in module **qtjambi-opengl**: - * [**qtjambi-opengl-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl/6.3.3/jar) - * [**qtjambi-opengl-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-windows-x64/6.3.3/jar) - * [**qtjambi-opengl-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-linux-x64/6.3.3/jar) - * [**qtjambi-opengl-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-macos/6.3.3/jar) - * [**qtjambi-opengl-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x86/6.3.3/jar) - * [**qtjambi-opengl-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x64/6.3.3/jar) - * [**qtjambi-opengl-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm/6.3.3/jar) - * [**qtjambi-opengl-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm64/6.3.3/jar) + * [**qtjambi-opengl-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl/6.3.4/jar) + * [**qtjambi-opengl-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-windows-x64/6.3.4/jar) + * [**qtjambi-opengl-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-linux-x64/6.3.4/jar) + * [**qtjambi-opengl-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-macos/6.3.4/jar) + * [**qtjambi-opengl-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x86/6.3.4/jar) + * [**qtjambi-opengl-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x64/6.3.4/jar) + * [**qtjambi-opengl-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm/6.3.4/jar) + * [**qtjambi-opengl-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm64/6.3.4/jar) * [QtOpenGLWidgets](https://doc.qt.io/qt-6/qtopenglwidgets-module.html) in module **qtjambi-openglwidgets**: - * [**qtjambi-openglwidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets/6.3.3/jar) - * [**qtjambi-openglwidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-openglwidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-openglwidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-macos/6.3.3/jar) - * [**qtjambi-openglwidgets-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x86/6.3.3/jar) - * [**qtjambi-openglwidgets-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x64/6.3.3/jar) - * [**qtjambi-openglwidgets-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm/6.3.3/jar) - * [**qtjambi-openglwidgets-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm64/6.3.3/jar) + * [**qtjambi-openglwidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets/6.3.4/jar) + * [**qtjambi-openglwidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-openglwidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-openglwidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-macos/6.3.4/jar) + * [**qtjambi-openglwidgets-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x86/6.3.4/jar) + * [**qtjambi-openglwidgets-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x64/6.3.4/jar) + * [**qtjambi-openglwidgets-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm/6.3.4/jar) + * [**qtjambi-openglwidgets-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm64/6.3.4/jar) * [QtMultimedia](https://doc.qt.io/qt-6/qtmultimedia-index.html) in module **qtjambi-multimedia**: - * [**qtjambi-multimedia-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/6.3.3/jar) - * [**qtjambi-multimedia-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/6.3.3/jar) - * [**qtjambi-multimedia-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/6.3.3/jar) - * [**qtjambi-multimedia-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/6.3.3/jar) - * [**qtjambi-multimedia-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/6.3.3/jar) - * [**qtjambi-multimedia-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/6.3.3/jar) - * [**qtjambi-multimedia-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/6.3.3/jar) - * [**qtjambi-multimedia-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/6.3.3/jar) + * [**qtjambi-multimedia-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/6.3.4/jar) + * [**qtjambi-multimedia-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/6.3.4/jar) + * [**qtjambi-multimedia-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/6.3.4/jar) + * [**qtjambi-multimedia-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/6.3.4/jar) + * [**qtjambi-multimedia-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/6.3.4/jar) + * [**qtjambi-multimedia-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/6.3.4/jar) + * [**qtjambi-multimedia-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/6.3.4/jar) + * [**qtjambi-multimedia-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/6.3.4/jar) * [QtMultimediaWidgets](https://doc.qt.io/qt-6/qtmultimedia-index.html) in module **qtjambi-multimediawidgets**: - * [**qtjambi-multimediawidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/6.3.3/jar) - * [**qtjambi-multimediawidgets-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/6.3.3/jar) + * [**qtjambi-multimediawidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/6.3.4/jar) + * [**qtjambi-multimediawidgets-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/6.3.4/jar) * [QtNfc](https://doc.qt.io/qt-6/qtnfc-index.html) in module **qtjambi-nfc**: - * [**qtjambi-nfc-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/6.3.3/jar) - * [**qtjambi-nfc-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/6.3.3/jar) - * [**qtjambi-nfc-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/6.3.3/jar) - * [**qtjambi-nfc-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/6.3.3/jar) - * [**qtjambi-nfc-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/6.3.3/jar) - * [**qtjambi-nfc-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/6.3.3/jar) - * [**qtjambi-nfc-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/6.3.3/jar) - * [**qtjambi-nfc-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/6.3.3/jar) + * [**qtjambi-nfc-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/6.3.4/jar) + * [**qtjambi-nfc-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/6.3.4/jar) + * [**qtjambi-nfc-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/6.3.4/jar) + * [**qtjambi-nfc-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/6.3.4/jar) + * [**qtjambi-nfc-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/6.3.4/jar) + * [**qtjambi-nfc-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/6.3.4/jar) + * [**qtjambi-nfc-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/6.3.4/jar) + * [**qtjambi-nfc-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/6.3.4/jar) * [QtNetworkAuth](https://doc.qt.io/qt-6/qtnetworkauth-index.html) in module **qtjambi-networkauth**: - * [**qtjambi-networkauth-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/6.3.3/jar) - * [**qtjambi-networkauth-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/6.3.3/jar) - * [**qtjambi-networkauth-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/6.3.3/jar) - * [**qtjambi-networkauth-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/6.3.3/jar) - * [**qtjambi-networkauth-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/6.3.3/jar) - * [**qtjambi-networkauth-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/6.3.3/jar) - * [**qtjambi-networkauth-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/6.3.3/jar) - * [**qtjambi-networkauth-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/6.3.3/jar) + * [**qtjambi-networkauth-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/6.3.4/jar) + * [**qtjambi-networkauth-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/6.3.4/jar) + * [**qtjambi-networkauth-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/6.3.4/jar) + * [**qtjambi-networkauth-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/6.3.4/jar) + * [**qtjambi-networkauth-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/6.3.4/jar) + * [**qtjambi-networkauth-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/6.3.4/jar) + * [**qtjambi-networkauth-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/6.3.4/jar) + * [**qtjambi-networkauth-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/6.3.4/jar) * [QtPositioning](https://doc.qt.io/qt-6/qtpositioning-index.html) in module **qtjambi-positioning**: - * [**qtjambi-positioning-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/6.3.3/jar) - * [**qtjambi-positioning-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/6.3.3/jar) - * [**qtjambi-positioning-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/6.3.3/jar) - * [**qtjambi-positioning-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/6.3.3/jar) - * [**qtjambi-positioning-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/6.3.3/jar) - * [**qtjambi-positioning-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/6.3.3/jar) - * [**qtjambi-positioning-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/6.3.3/jar) - * [**qtjambi-positioning-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/6.3.3/jar) + * [**qtjambi-positioning-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/6.3.4/jar) + * [**qtjambi-positioning-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/6.3.4/jar) + * [**qtjambi-positioning-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/6.3.4/jar) + * [**qtjambi-positioning-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/6.3.4/jar) + * [**qtjambi-positioning-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/6.3.4/jar) + * [**qtjambi-positioning-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/6.3.4/jar) + * [**qtjambi-positioning-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/6.3.4/jar) + * [**qtjambi-positioning-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/6.3.4/jar) * [QtPrintSupport](https://doc.qt.io/qt-6/qtprintsupport-index.html) in module **qtjambi-printsupport**: - * [**qtjambi-printsupport-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/6.3.3/jar) - * [**qtjambi-printsupport-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/6.3.3/jar) - * [**qtjambi-printsupport-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/6.3.3/jar) - * [**qtjambi-printsupport-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/6.3.3/jar) - * [**qtjambi-printsupport-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/6.3.3/jar) - * [**qtjambi-printsupport-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/6.3.3/jar) - * [**qtjambi-printsupport-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/6.3.3/jar) - * [**qtjambi-printsupport-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/6.3.3/jar) + * [**qtjambi-printsupport-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/6.3.4/jar) + * [**qtjambi-printsupport-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/6.3.4/jar) + * [**qtjambi-printsupport-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/6.3.4/jar) + * [**qtjambi-printsupport-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/6.3.4/jar) + * [**qtjambi-printsupport-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/6.3.4/jar) + * [**qtjambi-printsupport-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/6.3.4/jar) + * [**qtjambi-printsupport-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/6.3.4/jar) + * [**qtjambi-printsupport-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/6.3.4/jar) * [QtQuick3D](https://doc.qt.io/qt-6/qtquick3d-index.html) in module **qtjambi-quick3d**: - * [**qtjambi-quick3d-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/6.3.3/jar) - * [**qtjambi-quick3d-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/6.3.3/jar) - * [**qtjambi-quick3d-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/6.3.3/jar) - * [**qtjambi-quick3d-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/6.3.3/jar) - * [**qtjambi-quick3d-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/6.3.3/jar) - * [**qtjambi-quick3d-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/6.3.3/jar) - * [**qtjambi-quick3d-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/6.3.3/jar) - * [**qtjambi-quick3d-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/6.3.3/jar) + * [**qtjambi-quick3d-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/6.3.4/jar) + * [**qtjambi-quick3d-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/6.3.4/jar) + * [**qtjambi-quick3d-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/6.3.4/jar) + * [**qtjambi-quick3d-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/6.3.4/jar) + * [**qtjambi-quick3d-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/6.3.4/jar) + * [**qtjambi-quick3d-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/6.3.4/jar) + * [**qtjambi-quick3d-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/6.3.4/jar) + * [**qtjambi-quick3d-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/6.3.4/jar) * [QtQuickWidgets](https://doc.qt.io/qt-6/qtquickwidgets-module.html) in module **qtjambi-quickwidgets**: - * [**qtjambi-quickwidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/6.3.3/jar) - * [**qtjambi-quickwidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-quickwidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-quickwidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/6.3.3/jar) - * [**qtjambi-quickwidgets-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/6.3.3/jar) - * [**qtjambi-quickwidgets-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/6.3.3/jar) - * [**qtjambi-quickwidgets-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/6.3.3/jar) - * [**qtjambi-quickwidgets-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/6.3.3/jar) + * [**qtjambi-quickwidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/6.3.4/jar) + * [**qtjambi-quickwidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-quickwidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-quickwidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/6.3.4/jar) + * [**qtjambi-quickwidgets-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/6.3.4/jar) + * [**qtjambi-quickwidgets-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/6.3.4/jar) + * [**qtjambi-quickwidgets-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/6.3.4/jar) + * [**qtjambi-quickwidgets-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/6.3.4/jar) * [QtRemoteObjects](https://doc.qt.io/qt-6/qtremoteobjects-module.html) in module **qtjambi-remoteobjects**: - * [**qtjambi-remoteobjects-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/6.3.3/jar) - * [**qtjambi-remoteobjects-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/6.3.3/jar) - * [**qtjambi-remoteobjects-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/6.3.3/jar) - * [**qtjambi-remoteobjects-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/6.3.3/jar) - * [**qtjambi-remoteobjects-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/6.3.3/jar) - * [**qtjambi-remoteobjects-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/6.3.3/jar) - * [**qtjambi-remoteobjects-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/6.3.3/jar) - * [**qtjambi-remoteobjects-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/6.3.3/jar) + * [**qtjambi-remoteobjects-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/6.3.4/jar) + * [**qtjambi-remoteobjects-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/6.3.4/jar) + * [**qtjambi-remoteobjects-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/6.3.4/jar) + * [**qtjambi-remoteobjects-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/6.3.4/jar) + * [**qtjambi-remoteobjects-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/6.3.4/jar) + * [**qtjambi-remoteobjects-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/6.3.4/jar) + * [**qtjambi-remoteobjects-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/6.3.4/jar) + * [**qtjambi-remoteobjects-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/6.3.4/jar) * [QtSCXML](https://doc.qt.io/qt-6/qtscxml-index.html) in module **qtjambi-scxml**: - * [**qtjambi-scxml-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/6.3.3/jar) - * [**qtjambi-scxml-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/6.3.3/jar) - * [**qtjambi-scxml-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/6.3.3/jar) - * [**qtjambi-scxml-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/6.3.3/jar) - * [**qtjambi-scxml-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/6.3.3/jar) - * [**qtjambi-scxml-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/6.3.3/jar) - * [**qtjambi-scxml-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/6.3.3/jar) - * [**qtjambi-scxml-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/6.3.3/jar) + * [**qtjambi-scxml-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/6.3.4/jar) + * [**qtjambi-scxml-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/6.3.4/jar) + * [**qtjambi-scxml-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/6.3.4/jar) + * [**qtjambi-scxml-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/6.3.4/jar) + * [**qtjambi-scxml-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/6.3.4/jar) + * [**qtjambi-scxml-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/6.3.4/jar) + * [**qtjambi-scxml-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/6.3.4/jar) + * [**qtjambi-scxml-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/6.3.4/jar) * [QtSensors](https://doc.qt.io/qt-6/qtsensors-index.html) in module **qtjambi-sensors**: - * [**qtjambi-sensors-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/6.3.3/jar) - * [**qtjambi-sensors-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/6.3.3/jar) - * [**qtjambi-sensors-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/6.3.3/jar) - * [**qtjambi-sensors-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/6.3.3/jar) - * [**qtjambi-sensors-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/6.3.3/jar) - * [**qtjambi-sensors-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/6.3.3/jar) - * [**qtjambi-sensors-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/6.3.3/jar) - * [**qtjambi-sensors-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/6.3.3/jar) + * [**qtjambi-sensors-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/6.3.4/jar) + * [**qtjambi-sensors-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/6.3.4/jar) + * [**qtjambi-sensors-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/6.3.4/jar) + * [**qtjambi-sensors-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/6.3.4/jar) + * [**qtjambi-sensors-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/6.3.4/jar) + * [**qtjambi-sensors-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/6.3.4/jar) + * [**qtjambi-sensors-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/6.3.4/jar) + * [**qtjambi-sensors-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/6.3.4/jar) * [QtSerialBus](https://doc.qt.io/qt-6/qtserialbus-index.html) in module **qtjambi-serialbus**: - * [**qtjambi-serialbus-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/6.3.3/jar) - * [**qtjambi-serialbus-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/6.3.3/jar) - * [**qtjambi-serialbus-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/6.3.3/jar) - * [**qtjambi-serialbus-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/6.3.3/jar) - * [**qtjambi-serialbus-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/6.3.3/jar) - * [**qtjambi-serialbus-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/6.3.3/jar) - * [**qtjambi-serialbus-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/6.3.3/jar) - * [**qtjambi-serialbus-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/6.3.3/jar) + * [**qtjambi-serialbus-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/6.3.4/jar) + * [**qtjambi-serialbus-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/6.3.4/jar) + * [**qtjambi-serialbus-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/6.3.4/jar) + * [**qtjambi-serialbus-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/6.3.4/jar) + * [**qtjambi-serialbus-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/6.3.4/jar) + * [**qtjambi-serialbus-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/6.3.4/jar) + * [**qtjambi-serialbus-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/6.3.4/jar) + * [**qtjambi-serialbus-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/6.3.4/jar) * [QtSerialPort](https://doc.qt.io/qt-6/qtserialport-index.html) in module **qtjambi-serialport**: - * [**qtjambi-serialport-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/6.3.3/jar) - * [**qtjambi-serialport-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/6.3.3/jar) - * [**qtjambi-serialport-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/6.3.3/jar) - * [**qtjambi-serialport-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/6.3.3/jar) - * [**qtjambi-serialport-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/6.3.3/jar) - * [**qtjambi-serialport-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/6.3.3/jar) - * [**qtjambi-serialport-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/6.3.3/jar) - * [**qtjambi-serialport-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/6.3.3/jar) + * [**qtjambi-serialport-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/6.3.4/jar) + * [**qtjambi-serialport-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/6.3.4/jar) + * [**qtjambi-serialport-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/6.3.4/jar) + * [**qtjambi-serialport-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/6.3.4/jar) + * [**qtjambi-serialport-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/6.3.4/jar) + * [**qtjambi-serialport-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/6.3.4/jar) + * [**qtjambi-serialport-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/6.3.4/jar) + * [**qtjambi-serialport-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/6.3.4/jar) * [QtSql](https://doc.qt.io/qt-6/qtsql-index.html) in module **qtjambi-sql**: - * [**qtjambi-sql-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/6.3.3/jar) - * [**qtjambi-sql-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/6.3.3/jar) - * [**qtjambi-sql-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/6.3.3/jar) - * [**qtjambi-sql-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/6.3.3/jar) - * [**qtjambi-sql-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/6.3.3/jar) - * [**qtjambi-sql-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/6.3.3/jar) - * [**qtjambi-sql-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/6.3.3/jar) - * [**qtjambi-sql-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/6.3.3/jar) + * [**qtjambi-sql-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/6.3.4/jar) + * [**qtjambi-sql-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/6.3.4/jar) + * [**qtjambi-sql-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/6.3.4/jar) + * [**qtjambi-sql-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/6.3.4/jar) + * [**qtjambi-sql-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/6.3.4/jar) + * [**qtjambi-sql-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/6.3.4/jar) + * [**qtjambi-sql-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/6.3.4/jar) + * [**qtjambi-sql-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/6.3.4/jar) * [QtSvg](https://doc.qt.io/qt-6/qtsvg-index.html) in module **qtjambi-svg**: - * [**qtjambi-svg-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/6.3.3/jar) - * [**qtjambi-svg-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/6.3.3/jar) - * [**qtjambi-svg-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/6.3.3/jar) - * [**qtjambi-svg-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/6.3.3/jar) - * [**qtjambi-svg-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/6.3.3/jar) - * [**qtjambi-svg-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/6.3.3/jar) - * [**qtjambi-svg-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/6.3.3/jar) - * [**qtjambi-svg-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/6.3.3/jar) + * [**qtjambi-svg-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/6.3.4/jar) + * [**qtjambi-svg-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/6.3.4/jar) + * [**qtjambi-svg-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/6.3.4/jar) + * [**qtjambi-svg-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/6.3.4/jar) + * [**qtjambi-svg-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/6.3.4/jar) + * [**qtjambi-svg-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/6.3.4/jar) + * [**qtjambi-svg-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/6.3.4/jar) + * [**qtjambi-svg-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/6.3.4/jar) * [QtSvgWidgets](https://doc.qt.io/qt-6/qtsvg-index.html) in module **qtjambi-svgwidgets**: - * [**qtjambi-svgwidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets/6.3.3/jar) - * [**qtjambi-svgwidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-svgwidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-svgwidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-macos/6.3.3/jar) - * [**qtjambi-svgwidgets-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x86/6.3.3/jar) - * [**qtjambi-svgwidgets-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x64/6.3.3/jar) - * [**qtjambi-svgwidgets-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm/6.3.3/jar) - * [**qtjambi-svgwidgets-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm64/6.3.3/jar) + * [**qtjambi-svgwidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets/6.3.4/jar) + * [**qtjambi-svgwidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-svgwidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-svgwidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-macos/6.3.4/jar) + * [**qtjambi-svgwidgets-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x86/6.3.4/jar) + * [**qtjambi-svgwidgets-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x64/6.3.4/jar) + * [**qtjambi-svgwidgets-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm/6.3.4/jar) + * [**qtjambi-svgwidgets-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm64/6.3.4/jar) * [QtStateMachine](https://doc.qt.io/qt-6/qtstatemachine-index.html) in module **qtjambi-statemachine**: - * [**qtjambi-statemachine-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine/6.3.3/jar) - * [**qtjambi-statemachine-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-windows-x64/6.3.3/jar) - * [**qtjambi-statemachine-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-linux-x64/6.3.3/jar) - * [**qtjambi-statemachine-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-macos/6.3.3/jar) - * [**qtjambi-statemachine-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x86/6.3.3/jar) - * [**qtjambi-statemachine-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x64/6.3.3/jar) - * [**qtjambi-statemachine-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm/6.3.3/jar) - * [**qtjambi-statemachine-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm64/6.3.3/jar) + * [**qtjambi-statemachine-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine/6.3.4/jar) + * [**qtjambi-statemachine-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-windows-x64/6.3.4/jar) + * [**qtjambi-statemachine-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-linux-x64/6.3.4/jar) + * [**qtjambi-statemachine-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-macos/6.3.4/jar) + * [**qtjambi-statemachine-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x86/6.3.4/jar) + * [**qtjambi-statemachine-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x64/6.3.4/jar) + * [**qtjambi-statemachine-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm/6.3.4/jar) + * [**qtjambi-statemachine-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm64/6.3.4/jar) * [QtUITools](https://doc.qt.io/qt-6/qtuitools-index.html) in module **qtjambi-uitools**: - * [**qtjambi-uitools-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/6.3.3/jar) - * [**qtjambi-uitools-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/6.3.3/jar) - * [**qtjambi-uitools-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/6.3.3/jar) - * [**qtjambi-uitools-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/6.3.3/jar) - * [**qtjambi-uitools-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/6.3.3/jar) - * [**qtjambi-uitools-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/6.3.3/jar) - * [**qtjambi-uitools-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/6.3.3/jar) - * [**qtjambi-uitools-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/6.3.3/jar) + * [**qtjambi-uitools-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/6.3.4/jar) + * [**qtjambi-uitools-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/6.3.4/jar) + * [**qtjambi-uitools-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/6.3.4/jar) + * [**qtjambi-uitools-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/6.3.4/jar) + * [**qtjambi-uitools-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/6.3.4/jar) + * [**qtjambi-uitools-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/6.3.4/jar) + * [**qtjambi-uitools-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/6.3.4/jar) + * [**qtjambi-uitools-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/6.3.4/jar) * [QtWebChannel](https://doc.qt.io/qt-6/qtwebchannel-index.html) in module **qtjambi-webchannel**: - * [**qtjambi-webchannel-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/6.3.3/jar) - * [**qtjambi-webchannel-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/6.3.3/jar) - * [**qtjambi-webchannel-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/6.3.3/jar) - * [**qtjambi-webchannel-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/6.3.3/jar) - * [**qtjambi-webchannel-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/6.3.3/jar) - * [**qtjambi-webchannel-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/6.3.3/jar) - * [**qtjambi-webchannel-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/6.3.3/jar) - * [**qtjambi-webchannel-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/6.3.3/jar) + * [**qtjambi-webchannel-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/6.3.4/jar) + * [**qtjambi-webchannel-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/6.3.4/jar) + * [**qtjambi-webchannel-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/6.3.4/jar) + * [**qtjambi-webchannel-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/6.3.4/jar) + * [**qtjambi-webchannel-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/6.3.4/jar) + * [**qtjambi-webchannel-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/6.3.4/jar) + * [**qtjambi-webchannel-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/6.3.4/jar) + * [**qtjambi-webchannel-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/6.3.4/jar) * [QtWebEngineCore](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginecore**: - * [**qtjambi-webenginecore-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/6.3.3/jar) - * [**qtjambi-webenginecore-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/6.3.3/jar) - * [**qtjambi-webenginecore-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/6.3.3/jar) - * [**qtjambi-webenginecore-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/6.3.3/jar) + * [**qtjambi-webenginecore-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/6.3.4/jar) + * [**qtjambi-webenginecore-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/6.3.4/jar) + * [**qtjambi-webenginecore-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/6.3.4/jar) + * [**qtjambi-webenginecore-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/6.3.4/jar) * [QtWebEngineWidgets](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginewidgets**: - * [**qtjambi-webenginewidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/6.3.3/jar) - * [**qtjambi-webenginewidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-webenginewidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-webenginewidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/6.3.3/jar) + * [**qtjambi-webenginewidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/6.3.4/jar) + * [**qtjambi-webenginewidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-webenginewidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-webenginewidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/6.3.4/jar) * [QtWebEngineQuick](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginequick**: - * [**qtjambi-webenginequick-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick/6.3.3/jar) - * [**qtjambi-webenginequick-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-windows-x64/6.3.3/jar) - * [**qtjambi-webenginequick-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-linux-x64/6.3.3/jar) - * [**qtjambi-webenginequick-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-macos/6.3.3/jar) + * [**qtjambi-webenginequick-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick/6.3.4/jar) + * [**qtjambi-webenginequick-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-windows-x64/6.3.4/jar) + * [**qtjambi-webenginequick-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-linux-x64/6.3.4/jar) + * [**qtjambi-webenginequick-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-macos/6.3.4/jar) * [QtWebSockets](https://doc.qt.io/qt-6/qtwebsockets-index.html) in module **qtjambi-websockets**: - * [**qtjambi-websockets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/6.3.3/jar) - * [**qtjambi-websockets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/6.3.3/jar) - * [**qtjambi-websockets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/6.3.3/jar) - * [**qtjambi-websockets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/6.3.3/jar) - * [**qtjambi-websockets-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/6.3.3/jar) - * [**qtjambi-websockets-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/6.3.3/jar) - * [**qtjambi-websockets-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/6.3.3/jar) - * [**qtjambi-websockets-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/6.3.3/jar) + * [**qtjambi-websockets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/6.3.4/jar) + * [**qtjambi-websockets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/6.3.4/jar) + * [**qtjambi-websockets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/6.3.4/jar) + * [**qtjambi-websockets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/6.3.4/jar) + * [**qtjambi-websockets-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/6.3.4/jar) + * [**qtjambi-websockets-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/6.3.4/jar) + * [**qtjambi-websockets-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/6.3.4/jar) + * [**qtjambi-websockets-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/6.3.4/jar) * [QtWebView](https://doc.qt.io/qt-6/qtwebview-index.html) in module **qtjambi-webview**: - * [**qtjambi-webview-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/6.3.3/jar) - * [**qtjambi-webview-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/6.3.3/jar) - * [**qtjambi-webview-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/6.3.3/jar) - * [**qtjambi-webview-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/6.3.3/jar) - * [**qtjambi-webview-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/6.3.3/jar) - * [**qtjambi-webview-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/6.3.3/jar) - * [**qtjambi-webview-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/6.3.3/jar) - * [**qtjambi-webview-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/6.3.3/jar) + * [**qtjambi-webview-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/6.3.4/jar) + * [**qtjambi-webview-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/6.3.4/jar) + * [**qtjambi-webview-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/6.3.4/jar) + * [**qtjambi-webview-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/6.3.4/jar) + * [**qtjambi-webview-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/6.3.4/jar) + * [**qtjambi-webview-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/6.3.4/jar) + * [**qtjambi-webview-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/6.3.4/jar) + * [**qtjambi-webview-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/6.3.4/jar) * [QtVirtualKeyboard](https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html) in module **qtjambi-virtualkeyboard**: - * [**qtjambi-virtualkeyboard-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/6.3.3/jar) - * [**qtjambi-virtualkeyboard-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/6.3.3/jar) + * [**qtjambi-virtualkeyboard-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/6.3.4/jar) + * [**qtjambi-virtualkeyboard-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/6.3.4/jar) * [QtXml](https://doc.qt.io/qt-6/qtxml-index.html) in module **qtjambi-xml**: - * [**qtjambi-xml-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/6.3.3/jar) - * [**qtjambi-xml-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/6.3.3/jar) - * [**qtjambi-xml-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/6.3.3/jar) - * [**qtjambi-xml-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/6.3.3/jar) - * [**qtjambi-xml-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/6.3.3/jar) - * [**qtjambi-xml-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/6.3.3/jar) - * [**qtjambi-xml-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/6.3.3/jar) - * [**qtjambi-xml-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/6.3.3/jar) + * [**qtjambi-xml-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/6.3.4/jar) + * [**qtjambi-xml-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/6.3.4/jar) + * [**qtjambi-xml-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/6.3.4/jar) + * [**qtjambi-xml-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/6.3.4/jar) + * [**qtjambi-xml-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/6.3.4/jar) + * [**qtjambi-xml-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/6.3.4/jar) + * [**qtjambi-xml-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/6.3.4/jar) + * [**qtjambi-xml-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/6.3.4/jar) * [QtDesigner](https://doc.qt.io/qt-6/qtdesigner-manual.html) in module **qtjambi-designer**: - * [**qtjambi-designer-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/6.3.3/jar) - * [**qtjambi-designer-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/6.3.3/jar) - * [**qtjambi-designer-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/6.3.3/jar) - * [**qtjambi-designer-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/6.3.3/jar) - * [**qtjambi-designer-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/6.3.3/jar) - * [**qtjambi-designer-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/6.3.3/jar) - * [**qtjambi-designer-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/6.3.3/jar) - * [**qtjambi-designer-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/6.3.3/jar) + * [**qtjambi-designer-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/6.3.4/jar) + * [**qtjambi-designer-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/6.3.4/jar) + * [**qtjambi-designer-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/6.3.4/jar) + * [**qtjambi-designer-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/6.3.4/jar) + * [**qtjambi-designer-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/6.3.4/jar) + * [**qtjambi-designer-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/6.3.4/jar) + * [**qtjambi-designer-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/6.3.4/jar) + * [**qtjambi-designer-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/6.3.4/jar) * [QtPDF](https://doc.qt.io/qt-6/qtpdf-index.html) in modules **qtjambi-pdf** and **qtjambi-pdfwidgets**: - * [**qtjambi-pdf-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf/6.3.3/jar) - * [**qtjambi-pdf-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-windows-x64/6.3.3/jar) - * [**qtjambi-pdf-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-linux-x64/6.3.3/jar) - * [**qtjambi-pdf-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-macos/6.3.3/jar) - * [**qtjambi-pdfwidgets-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets/6.3.3/jar) - * [**qtjambi-pdfwidgets-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-windows-x64/6.3.3/jar) - * [**qtjambi-pdfwidgets-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-linux-x64/6.3.3/jar) - * [**qtjambi-pdfwidgets-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-macos/6.3.3/jar) + * [**qtjambi-pdf-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf/6.3.4/jar) + * [**qtjambi-pdf-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-windows-x64/6.3.4/jar) + * [**qtjambi-pdf-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-linux-x64/6.3.4/jar) + * [**qtjambi-pdf-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdf-native-macos/6.3.4/jar) + * [**qtjambi-pdfwidgets-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets/6.3.4/jar) + * [**qtjambi-pdfwidgets-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-windows-x64/6.3.4/jar) + * [**qtjambi-pdfwidgets-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-linux-x64/6.3.4/jar) + * [**qtjambi-pdfwidgets-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-pdfwidgets-native-macos/6.3.4/jar) ### Qt6 Platform-dependent Add-Ons * [Active Qt (Windows only)](https://doc.qt.io/qt-6/activeqt-manual.html) in module **qtjambi-activex**: - * [**qtjambi-activex-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/6.3.3/jar) - * [**qtjambi-activex-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/6.3.3/jar) + * [**qtjambi-activex-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/6.3.4/jar) + * [**qtjambi-activex-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/6.3.4/jar) ### Qt3D * [Qt3DCore](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dcore**: - * [**qtjambi-qt3dcore-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/6.3.3/jar) - * [**qtjambi-qt3dcore-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dcore-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dcore-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/6.3.3/jar) - * [**qtjambi-qt3dcore-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dcore-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dcore-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dcore-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dcore-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/6.3.4/jar) + * [**qtjambi-qt3dcore-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dcore-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dcore-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/6.3.4/jar) + * [**qtjambi-qt3dcore-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dcore-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dcore-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dcore-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/6.3.4/jar) * [Qt3DRender](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3drender**: - * [**qtjambi-qt3drender-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/6.3.3/jar) - * [**qtjambi-qt3drender-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3drender-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3drender-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/6.3.3/jar) - * [**qtjambi-qt3drender-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3drender-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3drender-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3drender-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3drender-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/6.3.4/jar) + * [**qtjambi-qt3drender-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3drender-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3drender-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/6.3.4/jar) + * [**qtjambi-qt3drender-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3drender-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3drender-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3drender-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/6.3.4/jar) * [Qt3DAnimation](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3danimation**: - * [**qtjambi-qt3danimation-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/6.3.3/jar) - * [**qtjambi-qt3danimation-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3danimation-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3danimation-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/6.3.3/jar) - * [**qtjambi-qt3danimation-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3danimation-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3danimation-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3danimation-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3danimation-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/6.3.4/jar) + * [**qtjambi-qt3danimation-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3danimation-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3danimation-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/6.3.4/jar) + * [**qtjambi-qt3danimation-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3danimation-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3danimation-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3danimation-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/6.3.4/jar) * [Qt3DExtras](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dextras**: - * [**qtjambi-qt3dextras-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/6.3.3/jar) - * [**qtjambi-qt3dextras-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dextras-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dextras-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/6.3.3/jar) - * [**qtjambi-qt3dextras-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dextras-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dextras-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dextras-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dextras-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/6.3.4/jar) + * [**qtjambi-qt3dextras-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dextras-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dextras-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/6.3.4/jar) + * [**qtjambi-qt3dextras-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dextras-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dextras-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dextras-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/6.3.4/jar) * [Qt3DInput](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dinput**: - * [**qtjambi-qt3dinput-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/6.3.3/jar) - * [**qtjambi-qt3dinput-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dinput-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dinput-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/6.3.3/jar) - * [**qtjambi-qt3dinput-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dinput-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dinput-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dinput-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dinput-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/6.3.4/jar) + * [**qtjambi-qt3dinput-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dinput-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dinput-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/6.3.4/jar) + * [**qtjambi-qt3dinput-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dinput-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dinput-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dinput-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/6.3.4/jar) * [Qt3DLogic](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dlogic**: - * [**qtjambi-qt3dlogic-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dlogic-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dlogic-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dlogic-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/6.3.4/jar) * [Qt3DQuick](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquick**: - * [**qtjambi-qt3dquick-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/6.3.3/jar) - * [**qtjambi-qt3dquick-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dquick-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dquick-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/6.3.3/jar) - * [**qtjambi-qt3dquick-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dquick-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dquick-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dquick-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dquick-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/6.3.4/jar) + * [**qtjambi-qt3dquick-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dquick-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dquick-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/6.3.4/jar) + * [**qtjambi-qt3dquick-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dquick-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dquick-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dquick-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/6.3.4/jar) * [Qt3DQuickExtras](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquickextras**: - * [**qtjambi-qt3dquickextras-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dquickextras-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dquickextras-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dquickextras-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/6.3.4/jar) * [Qt3DQuickScene3D](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquickscene2d**: - * [**qtjambi-qt3dquickscene2d-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/6.3.3/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/6.3.3/jar) + * [**qtjambi-qt3dquickscene2d-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/6.3.4/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/6.3.4/jar) ### QtJambi Plugins * JDBC Sql Plugin: - * [**qtjambi-plugin-qsqljdbc-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-common-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/6.3.3/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/6.3.3/jar) + * [**qtjambi-plugin-qsqljdbc-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-common-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/6.3.4/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/6.3.4/jar) ### QtJambi Tools * [QtJambi User Interface Compiler (UIC)](https://doc.qt.io/qt-6/designer-using-a-ui-file.html#compile-time-form-processing): - * [**qtjambi-uic-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/6.3.3/jar) - * [**qtjambi-uic-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/6.3.3/jar) - * [**qtjambi-uic-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/6.3.3/jar) - * [**qtjambi-uic-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/6.3.3/jar) - * [**qtjambi-uic-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/6.3.3/jar) - * [**qtjambi-uic-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/6.3.3/jar) - * [**qtjambi-uic-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/6.3.3/jar) - * [**qtjambi-uic-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/6.3.3/jar) + * [**qtjambi-uic-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/6.3.4/jar) + * [**qtjambi-uic-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/6.3.4/jar) + * [**qtjambi-uic-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/6.3.4/jar) + * [**qtjambi-uic-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/6.3.4/jar) + * [**qtjambi-uic-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/6.3.4/jar) + * [**qtjambi-uic-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/6.3.4/jar) + * [**qtjambi-uic-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/6.3.4/jar) + * [**qtjambi-uic-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/6.3.4/jar) * QtJambi Deployer: - * [**qtjambi-deployer-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/6.3.3/jar) - * [**qtjambi-deployer-native-windows-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/6.3.3/jar) - * [**qtjambi-deployer-native-linux-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/6.3.3/jar) - * [**qtjambi-deployer-native-macos-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/6.3.3/jar) - * [**qtjambi-deployer-native-android-x86-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/6.3.3/jar) - * [**qtjambi-deployer-native-android-x64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/6.3.3/jar) - * [**qtjambi-deployer-native-android-arm-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/6.3.3/jar) - * [**qtjambi-deployer-native-android-arm64-6.3.3.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/6.3.3/jar) + * [**qtjambi-deployer-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/6.3.4/jar) + * [**qtjambi-deployer-native-windows-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/6.3.4/jar) + * [**qtjambi-deployer-native-linux-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/6.3.4/jar) + * [**qtjambi-deployer-native-macos-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/6.3.4/jar) + * [**qtjambi-deployer-native-android-x86-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/6.3.4/jar) + * [**qtjambi-deployer-native-android-x64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/6.3.4/jar) + * [**qtjambi-deployer-native-android-arm-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/6.3.4/jar) + * [**qtjambi-deployer-native-android-arm64-6.3.4.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/6.3.4/jar) ## QtJambi for Qt 6.2 -QtJambi 6.2.6 requires Qt 6.2.x whereas x can be any patch version. +QtJambi 6.2.7 requires Qt 6.2.x whereas x can be any patch version. Following Qt 6.2 modules are provided by QtJambi: ### Qt6 Essentials * [QtCore](https://doc.qt.io/qt-6/qtcore-index.html), [QtGui](https://doc.qt.io/qt-6/qtgui-index.html) and [QtWidgets](https://doc.qt.io/qt-6/qtwidgets-index.html) in module **qtjambi**: - * [**qtjambi-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/6.2.6/jar) - * [**qtjambi-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/6.2.6/jar) - * [**qtjambi-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/6.2.6/jar) - * [**qtjambi-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/6.2.6/jar) - * [**qtjambi-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/6.2.6/jar) - * [**qtjambi-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/6.2.6/jar) - * [**qtjambi-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/6.2.6/jar) - * [**qtjambi-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/6.2.6/jar) + * [**qtjambi-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/6.2.7/jar) + * [**qtjambi-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/6.2.7/jar) + * [**qtjambi-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/6.2.7/jar) + * [**qtjambi-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/6.2.7/jar) + * [**qtjambi-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/6.2.7/jar) + * [**qtjambi-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/6.2.7/jar) + * [**qtjambi-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/6.2.7/jar) + * [**qtjambi-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/6.2.7/jar) * [QtDBus](https://doc.qt.io/qt-6/qtdbus-index.html) in module **qtjambi-dbus**: - * [**qtjambi-dbus-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/6.2.6/jar) - * [**qtjambi-dbus-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/6.2.6/jar) - * [**qtjambi-dbus-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/6.2.6/jar) - * [**qtjambi-dbus-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/6.2.6/jar) - * [**qtjambi-dbus-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/6.2.6/jar) - * [**qtjambi-dbus-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/6.2.6/jar) - * [**qtjambi-dbus-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/6.2.6/jar) - * [**qtjambi-dbus-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/6.2.6/jar) + * [**qtjambi-dbus-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/6.2.7/jar) + * [**qtjambi-dbus-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/6.2.7/jar) + * [**qtjambi-dbus-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/6.2.7/jar) + * [**qtjambi-dbus-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/6.2.7/jar) + * [**qtjambi-dbus-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/6.2.7/jar) + * [**qtjambi-dbus-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/6.2.7/jar) + * [**qtjambi-dbus-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/6.2.7/jar) + * [**qtjambi-dbus-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/6.2.7/jar) * [QtNetwork](https://doc.qt.io/qt-6/qtnetwork-index.html) in module **qtjambi-network**: - * [**qtjambi-network-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/6.2.6/jar) - * [**qtjambi-network-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/6.2.6/jar) - * [**qtjambi-network-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/6.2.6/jar) - * [**qtjambi-network-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/6.2.6/jar) - * [**qtjambi-network-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/6.2.6/jar) - * [**qtjambi-network-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/6.2.6/jar) - * [**qtjambi-network-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/6.2.6/jar) - * [**qtjambi-network-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/6.2.6/jar) + * [**qtjambi-network-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/6.2.7/jar) + * [**qtjambi-network-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/6.2.7/jar) + * [**qtjambi-network-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/6.2.7/jar) + * [**qtjambi-network-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/6.2.7/jar) + * [**qtjambi-network-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/6.2.7/jar) + * [**qtjambi-network-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/6.2.7/jar) + * [**qtjambi-network-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/6.2.7/jar) + * [**qtjambi-network-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/6.2.7/jar) * [QtQml](https://doc.qt.io/qt-6/qtqml-index.html) in module **qtjambi-qml**: - * [**qtjambi-qml-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/6.2.6/jar) - * [**qtjambi-qml-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/6.2.6/jar) - * [**qtjambi-qml-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/6.2.6/jar) - * [**qtjambi-qml-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/6.2.6/jar) - * [**qtjambi-qml-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/6.2.6/jar) - * [**qtjambi-qml-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/6.2.6/jar) - * [**qtjambi-qml-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/6.2.6/jar) - * [**qtjambi-qml-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/6.2.6/jar) + * [**qtjambi-qml-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/6.2.7/jar) + * [**qtjambi-qml-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/6.2.7/jar) + * [**qtjambi-qml-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/6.2.7/jar) + * [**qtjambi-qml-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/6.2.7/jar) + * [**qtjambi-qml-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/6.2.7/jar) + * [**qtjambi-qml-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/6.2.7/jar) + * [**qtjambi-qml-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/6.2.7/jar) + * [**qtjambi-qml-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/6.2.7/jar) * [QtQuick](https://doc.qt.io/qt-6/qtquick-index.html) in module **qtjambi-quick**: - * [**qtjambi-quick-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/6.2.6/jar) - * [**qtjambi-quick-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/6.2.6/jar) - * [**qtjambi-quick-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/6.2.6/jar) - * [**qtjambi-quick-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/6.2.6/jar) - * [**qtjambi-quick-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/6.2.6/jar) - * [**qtjambi-quick-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/6.2.6/jar) - * [**qtjambi-quick-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/6.2.6/jar) - * [**qtjambi-quick-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/6.2.6/jar) + * [**qtjambi-quick-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/6.2.7/jar) + * [**qtjambi-quick-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/6.2.7/jar) + * [**qtjambi-quick-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/6.2.7/jar) + * [**qtjambi-quick-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/6.2.7/jar) + * [**qtjambi-quick-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/6.2.7/jar) + * [**qtjambi-quick-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/6.2.7/jar) + * [**qtjambi-quick-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/6.2.7/jar) + * [**qtjambi-quick-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/6.2.7/jar) * [QtQuickControls](https://doc.qt.io/qt-6/qtquickcontrols-index.html) in module **qtjambi-quickcontrols**: - * [**qtjambi-quickcontrols-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/6.2.6/jar) - * [**qtjambi-quickcontrols-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/6.2.6/jar) - * [**qtjambi-quickcontrols-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/6.2.6/jar) - * [**qtjambi-quickcontrols-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/6.2.6/jar) - * [**qtjambi-quickcontrols-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/6.2.6/jar) - * [**qtjambi-quickcontrols-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/6.2.6/jar) - * [**qtjambi-quickcontrols-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/6.2.6/jar) - * [**qtjambi-quickcontrols-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/6.2.6/jar) + * [**qtjambi-quickcontrols-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/6.2.7/jar) + * [**qtjambi-quickcontrols-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/6.2.7/jar) + * [**qtjambi-quickcontrols-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/6.2.7/jar) + * [**qtjambi-quickcontrols-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/6.2.7/jar) + * [**qtjambi-quickcontrols-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/6.2.7/jar) + * [**qtjambi-quickcontrols-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/6.2.7/jar) + * [**qtjambi-quickcontrols-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/6.2.7/jar) + * [**qtjambi-quickcontrols-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/6.2.7/jar) * [QtQuickTest](https://doc.qt.io/qt-6/qtquicktest-index.html) in module **qtjambi-quicktest**: - * [**qtjambi-quicktest-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/6.2.6/jar) - * [**qtjambi-quicktest-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/6.2.6/jar) - * [**qtjambi-quicktest-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/6.2.6/jar) - * [**qtjambi-quicktest-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/6.2.6/jar) - * [**qtjambi-quicktest-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/6.2.6/jar) - * [**qtjambi-quicktest-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/6.2.6/jar) - * [**qtjambi-quicktest-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/6.2.6/jar) - * [**qtjambi-quicktest-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/6.2.6/jar) + * [**qtjambi-quicktest-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/6.2.7/jar) + * [**qtjambi-quicktest-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/6.2.7/jar) + * [**qtjambi-quicktest-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/6.2.7/jar) + * [**qtjambi-quicktest-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/6.2.7/jar) + * [**qtjambi-quicktest-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/6.2.7/jar) + * [**qtjambi-quicktest-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/6.2.7/jar) + * [**qtjambi-quicktest-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/6.2.7/jar) + * [**qtjambi-quicktest-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/6.2.7/jar) * [QtTest](https://doc.qt.io/qt-6/qttest-index.html) in module **qtjambi-test**: - * [**qtjambi-test-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/6.2.6/jar) - * [**qtjambi-test-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/6.2.6/jar) - * [**qtjambi-test-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/6.2.6/jar) - * [**qtjambi-test-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/6.2.6/jar) - * [**qtjambi-test-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/6.2.6/jar) - * [**qtjambi-test-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/6.2.6/jar) - * [**qtjambi-test-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/6.2.6/jar) - * [**qtjambi-test-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/6.2.6/jar) + * [**qtjambi-test-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/6.2.7/jar) + * [**qtjambi-test-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/6.2.7/jar) + * [**qtjambi-test-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/6.2.7/jar) + * [**qtjambi-test-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/6.2.7/jar) + * [**qtjambi-test-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/6.2.7/jar) + * [**qtjambi-test-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/6.2.7/jar) + * [**qtjambi-test-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/6.2.7/jar) + * [**qtjambi-test-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/6.2.7/jar) ### Qt6 Add-Ons * [QtBluetooth](https://doc.qt.io/qt-6/qtbluetooth-index.html) in module **qtjambi-bluetooth**: - * [**qtjambi-bluetooth-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/6.2.6/jar) - * [**qtjambi-bluetooth-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/6.2.6/jar) - * [**qtjambi-bluetooth-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/6.2.6/jar) - * [**qtjambi-bluetooth-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/6.2.6/jar) - * [**qtjambi-bluetooth-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/6.2.6/jar) - * [**qtjambi-bluetooth-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/6.2.6/jar) - * [**qtjambi-bluetooth-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/6.2.6/jar) - * [**qtjambi-bluetooth-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/6.2.6/jar) + * [**qtjambi-bluetooth-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/6.2.7/jar) + * [**qtjambi-bluetooth-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/6.2.7/jar) + * [**qtjambi-bluetooth-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/6.2.7/jar) + * [**qtjambi-bluetooth-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/6.2.7/jar) + * [**qtjambi-bluetooth-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/6.2.7/jar) + * [**qtjambi-bluetooth-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/6.2.7/jar) + * [**qtjambi-bluetooth-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/6.2.7/jar) + * [**qtjambi-bluetooth-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/6.2.7/jar) * [QtCharts](https://doc.qt.io/qt-6/qtcharts-index.html) in module **qtjambi-charts**: - * [**qtjambi-charts-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/6.2.6/jar) - * [**qtjambi-charts-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/6.2.6/jar) - * [**qtjambi-charts-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/6.2.6/jar) - * [**qtjambi-charts-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/6.2.6/jar) - * [**qtjambi-charts-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/6.2.6/jar) - * [**qtjambi-charts-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/6.2.6/jar) - * [**qtjambi-charts-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/6.2.6/jar) - * [**qtjambi-charts-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/6.2.6/jar) + * [**qtjambi-charts-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/6.2.7/jar) + * [**qtjambi-charts-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/6.2.7/jar) + * [**qtjambi-charts-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/6.2.7/jar) + * [**qtjambi-charts-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/6.2.7/jar) + * [**qtjambi-charts-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/6.2.7/jar) + * [**qtjambi-charts-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/6.2.7/jar) + * [**qtjambi-charts-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/6.2.7/jar) + * [**qtjambi-charts-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/6.2.7/jar) * [QtDataVisualization](https://doc.qt.io/qt-6/qtdatavisualization-index.html) in module **qtjambi-datavisualization**: - * [**qtjambi-datavisualization-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/6.2.6/jar) - * [**qtjambi-datavisualization-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/6.2.6/jar) - * [**qtjambi-datavisualization-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/6.2.6/jar) - * [**qtjambi-datavisualization-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/6.2.6/jar) - * [**qtjambi-datavisualization-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/6.2.6/jar) - * [**qtjambi-datavisualization-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/6.2.6/jar) - * [**qtjambi-datavisualization-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/6.2.6/jar) - * [**qtjambi-datavisualization-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/6.2.6/jar) + * [**qtjambi-datavisualization-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/6.2.7/jar) + * [**qtjambi-datavisualization-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/6.2.7/jar) + * [**qtjambi-datavisualization-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/6.2.7/jar) + * [**qtjambi-datavisualization-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/6.2.7/jar) + * [**qtjambi-datavisualization-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/6.2.7/jar) + * [**qtjambi-datavisualization-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/6.2.7/jar) + * [**qtjambi-datavisualization-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/6.2.7/jar) + * [**qtjambi-datavisualization-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/6.2.7/jar) * [QtConcurrent](https://doc.qt.io/qt-6/qtconcurrent-index.html) in module **qtjambi-concurrent**: - * [**qtjambi-concurrent-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/6.2.6/jar) - * [**qtjambi-concurrent-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/6.2.6/jar) - * [**qtjambi-concurrent-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/6.2.6/jar) - * [**qtjambi-concurrent-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/6.2.6/jar) - * [**qtjambi-concurrent-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/6.2.6/jar) - * [**qtjambi-concurrent-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/6.2.6/jar) - * [**qtjambi-concurrent-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/6.2.6/jar) - * [**qtjambi-concurrent-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/6.2.6/jar) + * [**qtjambi-concurrent-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/6.2.7/jar) + * [**qtjambi-concurrent-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/6.2.7/jar) + * [**qtjambi-concurrent-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/6.2.7/jar) + * [**qtjambi-concurrent-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/6.2.7/jar) + * [**qtjambi-concurrent-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/6.2.7/jar) + * [**qtjambi-concurrent-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/6.2.7/jar) + * [**qtjambi-concurrent-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/6.2.7/jar) + * [**qtjambi-concurrent-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/6.2.7/jar) * [QtHelp](https://doc.qt.io/qt-6/qthelp-index.html) in module **qtjambi-help**: - * [**qtjambi-help-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/6.2.6/jar) - * [**qtjambi-help-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/6.2.6/jar) - * [**qtjambi-help-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/6.2.6/jar) - * [**qtjambi-help-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/6.2.6/jar) - * [**qtjambi-help-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/6.2.6/jar) - * [**qtjambi-help-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/6.2.6/jar) - * [**qtjambi-help-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/6.2.6/jar) - * [**qtjambi-help-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/6.2.6/jar) + * [**qtjambi-help-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/6.2.7/jar) + * [**qtjambi-help-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/6.2.7/jar) + * [**qtjambi-help-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/6.2.7/jar) + * [**qtjambi-help-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/6.2.7/jar) + * [**qtjambi-help-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/6.2.7/jar) + * [**qtjambi-help-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/6.2.7/jar) + * [**qtjambi-help-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/6.2.7/jar) + * [**qtjambi-help-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/6.2.7/jar) * [QtOpenGL](https://doc.qt.io/qt-6/qtopengl-index.html) in module **qtjambi-opengl**: - * [**qtjambi-opengl-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl/6.2.6/jar) - * [**qtjambi-opengl-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-windows-x64/6.2.6/jar) - * [**qtjambi-opengl-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-linux-x64/6.2.6/jar) - * [**qtjambi-opengl-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-macos/6.2.6/jar) - * [**qtjambi-opengl-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x86/6.2.6/jar) - * [**qtjambi-opengl-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x64/6.2.6/jar) - * [**qtjambi-opengl-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm/6.2.6/jar) - * [**qtjambi-opengl-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm64/6.2.6/jar) + * [**qtjambi-opengl-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl/6.2.7/jar) + * [**qtjambi-opengl-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-windows-x64/6.2.7/jar) + * [**qtjambi-opengl-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-linux-x64/6.2.7/jar) + * [**qtjambi-opengl-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-macos/6.2.7/jar) + * [**qtjambi-opengl-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x86/6.2.7/jar) + * [**qtjambi-opengl-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-x64/6.2.7/jar) + * [**qtjambi-opengl-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm/6.2.7/jar) + * [**qtjambi-opengl-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-opengl-native-android-arm64/6.2.7/jar) * [QtOpenGLWidgets](https://doc.qt.io/qt-6/qtopenglwidgets-module.html) in module **qtjambi-openglwidgets**: - * [**qtjambi-openglwidgets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets/6.2.6/jar) - * [**qtjambi-openglwidgets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-windows-x64/6.2.6/jar) - * [**qtjambi-openglwidgets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-linux-x64/6.2.6/jar) - * [**qtjambi-openglwidgets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-macos/6.2.6/jar) - * [**qtjambi-openglwidgets-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x86/6.2.6/jar) - * [**qtjambi-openglwidgets-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x64/6.2.6/jar) - * [**qtjambi-openglwidgets-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm/6.2.6/jar) - * [**qtjambi-openglwidgets-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm64/6.2.6/jar) + * [**qtjambi-openglwidgets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets/6.2.7/jar) + * [**qtjambi-openglwidgets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-windows-x64/6.2.7/jar) + * [**qtjambi-openglwidgets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-linux-x64/6.2.7/jar) + * [**qtjambi-openglwidgets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-macos/6.2.7/jar) + * [**qtjambi-openglwidgets-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x86/6.2.7/jar) + * [**qtjambi-openglwidgets-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-x64/6.2.7/jar) + * [**qtjambi-openglwidgets-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm/6.2.7/jar) + * [**qtjambi-openglwidgets-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-openglwidgets-native-android-arm64/6.2.7/jar) * [QtMultimedia](https://doc.qt.io/qt-6/qtmultimedia-index.html) in module **qtjambi-multimedia**: - * [**qtjambi-multimedia-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/6.2.6/jar) - * [**qtjambi-multimedia-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/6.2.6/jar) - * [**qtjambi-multimedia-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/6.2.6/jar) - * [**qtjambi-multimedia-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/6.2.6/jar) - * [**qtjambi-multimedia-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/6.2.6/jar) - * [**qtjambi-multimedia-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/6.2.6/jar) - * [**qtjambi-multimedia-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/6.2.6/jar) - * [**qtjambi-multimedia-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/6.2.6/jar) + * [**qtjambi-multimedia-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/6.2.7/jar) + * [**qtjambi-multimedia-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/6.2.7/jar) + * [**qtjambi-multimedia-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/6.2.7/jar) + * [**qtjambi-multimedia-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/6.2.7/jar) + * [**qtjambi-multimedia-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/6.2.7/jar) + * [**qtjambi-multimedia-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/6.2.7/jar) + * [**qtjambi-multimedia-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/6.2.7/jar) + * [**qtjambi-multimedia-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/6.2.7/jar) * [QtMultimediaWidgets](https://doc.qt.io/qt-6/qtmultimedia-index.html) in module **qtjambi-multimediawidgets**: - * [**qtjambi-multimediawidgets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/6.2.6/jar) - * [**qtjambi-multimediawidgets-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/6.2.6/jar) + * [**qtjambi-multimediawidgets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/6.2.7/jar) + * [**qtjambi-multimediawidgets-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/6.2.7/jar) * [QtNfc](https://doc.qt.io/qt-6/qtnfc-index.html) in module **qtjambi-nfc**: - * [**qtjambi-nfc-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/6.2.6/jar) - * [**qtjambi-nfc-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/6.2.6/jar) - * [**qtjambi-nfc-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/6.2.6/jar) - * [**qtjambi-nfc-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/6.2.6/jar) - * [**qtjambi-nfc-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/6.2.6/jar) - * [**qtjambi-nfc-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/6.2.6/jar) - * [**qtjambi-nfc-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/6.2.6/jar) - * [**qtjambi-nfc-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/6.2.6/jar) + * [**qtjambi-nfc-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/6.2.7/jar) + * [**qtjambi-nfc-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/6.2.7/jar) + * [**qtjambi-nfc-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/6.2.7/jar) + * [**qtjambi-nfc-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/6.2.7/jar) + * [**qtjambi-nfc-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/6.2.7/jar) + * [**qtjambi-nfc-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/6.2.7/jar) + * [**qtjambi-nfc-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/6.2.7/jar) + * [**qtjambi-nfc-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/6.2.7/jar) * [QtNetworkAuth](https://doc.qt.io/qt-6/qtnetworkauth-index.html) in module **qtjambi-networkauth**: - * [**qtjambi-networkauth-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/6.2.6/jar) - * [**qtjambi-networkauth-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/6.2.6/jar) - * [**qtjambi-networkauth-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/6.2.6/jar) - * [**qtjambi-networkauth-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/6.2.6/jar) - * [**qtjambi-networkauth-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/6.2.6/jar) - * [**qtjambi-networkauth-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/6.2.6/jar) - * [**qtjambi-networkauth-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/6.2.6/jar) - * [**qtjambi-networkauth-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/6.2.6/jar) + * [**qtjambi-networkauth-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/6.2.7/jar) + * [**qtjambi-networkauth-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/6.2.7/jar) + * [**qtjambi-networkauth-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/6.2.7/jar) + * [**qtjambi-networkauth-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/6.2.7/jar) + * [**qtjambi-networkauth-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/6.2.7/jar) + * [**qtjambi-networkauth-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/6.2.7/jar) + * [**qtjambi-networkauth-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/6.2.7/jar) + * [**qtjambi-networkauth-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/6.2.7/jar) * [QtPositioning](https://doc.qt.io/qt-6/qtpositioning-index.html) in module **qtjambi-positioning**: - * [**qtjambi-positioning-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/6.2.6/jar) - * [**qtjambi-positioning-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/6.2.6/jar) - * [**qtjambi-positioning-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/6.2.6/jar) - * [**qtjambi-positioning-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/6.2.6/jar) - * [**qtjambi-positioning-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/6.2.6/jar) - * [**qtjambi-positioning-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/6.2.6/jar) - * [**qtjambi-positioning-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/6.2.6/jar) - * [**qtjambi-positioning-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/6.2.6/jar) + * [**qtjambi-positioning-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/6.2.7/jar) + * [**qtjambi-positioning-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/6.2.7/jar) + * [**qtjambi-positioning-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/6.2.7/jar) + * [**qtjambi-positioning-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/6.2.7/jar) + * [**qtjambi-positioning-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/6.2.7/jar) + * [**qtjambi-positioning-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/6.2.7/jar) + * [**qtjambi-positioning-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/6.2.7/jar) + * [**qtjambi-positioning-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/6.2.7/jar) * [QtPrintSupport](https://doc.qt.io/qt-6/qtprintsupport-index.html) in module **qtjambi-printsupport**: - * [**qtjambi-printsupport-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/6.2.6/jar) - * [**qtjambi-printsupport-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/6.2.6/jar) - * [**qtjambi-printsupport-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/6.2.6/jar) - * [**qtjambi-printsupport-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/6.2.6/jar) - * [**qtjambi-printsupport-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/6.2.6/jar) - * [**qtjambi-printsupport-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/6.2.6/jar) - * [**qtjambi-printsupport-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/6.2.6/jar) - * [**qtjambi-printsupport-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/6.2.6/jar) + * [**qtjambi-printsupport-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/6.2.7/jar) + * [**qtjambi-printsupport-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/6.2.7/jar) + * [**qtjambi-printsupport-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/6.2.7/jar) + * [**qtjambi-printsupport-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/6.2.7/jar) + * [**qtjambi-printsupport-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/6.2.7/jar) + * [**qtjambi-printsupport-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/6.2.7/jar) + * [**qtjambi-printsupport-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/6.2.7/jar) + * [**qtjambi-printsupport-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/6.2.7/jar) * [QtQuick3D](https://doc.qt.io/qt-6/qtquick3d-index.html) in module **qtjambi-quick3d**: - * [**qtjambi-quick3d-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/6.2.6/jar) - * [**qtjambi-quick3d-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/6.2.6/jar) - * [**qtjambi-quick3d-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/6.2.6/jar) - * [**qtjambi-quick3d-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/6.2.6/jar) - * [**qtjambi-quick3d-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/6.2.6/jar) - * [**qtjambi-quick3d-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/6.2.6/jar) - * [**qtjambi-quick3d-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/6.2.6/jar) - * [**qtjambi-quick3d-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/6.2.6/jar) + * [**qtjambi-quick3d-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/6.2.7/jar) + * [**qtjambi-quick3d-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/6.2.7/jar) + * [**qtjambi-quick3d-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/6.2.7/jar) + * [**qtjambi-quick3d-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/6.2.7/jar) + * [**qtjambi-quick3d-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/6.2.7/jar) + * [**qtjambi-quick3d-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/6.2.7/jar) + * [**qtjambi-quick3d-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/6.2.7/jar) + * [**qtjambi-quick3d-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/6.2.7/jar) * [QtQuickWidgets](https://doc.qt.io/qt-6/qtquickwidgets-module.html) in module **qtjambi-quickwidgets**: - * [**qtjambi-quickwidgets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/6.2.6/jar) - * [**qtjambi-quickwidgets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/6.2.6/jar) - * [**qtjambi-quickwidgets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/6.2.6/jar) - * [**qtjambi-quickwidgets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/6.2.6/jar) - * [**qtjambi-quickwidgets-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/6.2.6/jar) - * [**qtjambi-quickwidgets-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/6.2.6/jar) - * [**qtjambi-quickwidgets-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/6.2.6/jar) - * [**qtjambi-quickwidgets-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/6.2.6/jar) + * [**qtjambi-quickwidgets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/6.2.7/jar) + * [**qtjambi-quickwidgets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/6.2.7/jar) + * [**qtjambi-quickwidgets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/6.2.7/jar) + * [**qtjambi-quickwidgets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/6.2.7/jar) + * [**qtjambi-quickwidgets-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/6.2.7/jar) + * [**qtjambi-quickwidgets-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/6.2.7/jar) + * [**qtjambi-quickwidgets-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/6.2.7/jar) + * [**qtjambi-quickwidgets-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/6.2.7/jar) * [QtRemoteObjects](https://doc.qt.io/qt-6/qtremoteobjects-module.html) in module **qtjambi-remoteobjects**: - * [**qtjambi-remoteobjects-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/6.2.6/jar) - * [**qtjambi-remoteobjects-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/6.2.6/jar) - * [**qtjambi-remoteobjects-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/6.2.6/jar) - * [**qtjambi-remoteobjects-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/6.2.6/jar) - * [**qtjambi-remoteobjects-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/6.2.6/jar) - * [**qtjambi-remoteobjects-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/6.2.6/jar) - * [**qtjambi-remoteobjects-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/6.2.6/jar) - * [**qtjambi-remoteobjects-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/6.2.6/jar) + * [**qtjambi-remoteobjects-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/6.2.7/jar) + * [**qtjambi-remoteobjects-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/6.2.7/jar) + * [**qtjambi-remoteobjects-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/6.2.7/jar) + * [**qtjambi-remoteobjects-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/6.2.7/jar) + * [**qtjambi-remoteobjects-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/6.2.7/jar) + * [**qtjambi-remoteobjects-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/6.2.7/jar) + * [**qtjambi-remoteobjects-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/6.2.7/jar) + * [**qtjambi-remoteobjects-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/6.2.7/jar) * [QtSCXML](https://doc.qt.io/qt-6/qtscxml-index.html) in module **qtjambi-scxml**: - * [**qtjambi-scxml-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/6.2.6/jar) - * [**qtjambi-scxml-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/6.2.6/jar) - * [**qtjambi-scxml-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/6.2.6/jar) - * [**qtjambi-scxml-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/6.2.6/jar) - * [**qtjambi-scxml-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/6.2.6/jar) - * [**qtjambi-scxml-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/6.2.6/jar) - * [**qtjambi-scxml-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/6.2.6/jar) - * [**qtjambi-scxml-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/6.2.6/jar) + * [**qtjambi-scxml-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/6.2.7/jar) + * [**qtjambi-scxml-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/6.2.7/jar) + * [**qtjambi-scxml-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/6.2.7/jar) + * [**qtjambi-scxml-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/6.2.7/jar) + * [**qtjambi-scxml-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/6.2.7/jar) + * [**qtjambi-scxml-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/6.2.7/jar) + * [**qtjambi-scxml-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/6.2.7/jar) + * [**qtjambi-scxml-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/6.2.7/jar) * [QtSensors](https://doc.qt.io/qt-6/qtsensors-index.html) in module **qtjambi-sensors**: - * [**qtjambi-sensors-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/6.2.6/jar) - * [**qtjambi-sensors-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/6.2.6/jar) - * [**qtjambi-sensors-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/6.2.6/jar) - * [**qtjambi-sensors-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/6.2.6/jar) - * [**qtjambi-sensors-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/6.2.6/jar) - * [**qtjambi-sensors-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/6.2.6/jar) - * [**qtjambi-sensors-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/6.2.6/jar) - * [**qtjambi-sensors-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/6.2.6/jar) + * [**qtjambi-sensors-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/6.2.7/jar) + * [**qtjambi-sensors-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/6.2.7/jar) + * [**qtjambi-sensors-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/6.2.7/jar) + * [**qtjambi-sensors-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/6.2.7/jar) + * [**qtjambi-sensors-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/6.2.7/jar) + * [**qtjambi-sensors-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/6.2.7/jar) + * [**qtjambi-sensors-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/6.2.7/jar) + * [**qtjambi-sensors-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/6.2.7/jar) * [QtSerialBus](https://doc.qt.io/qt-6/qtserialbus-index.html) in module **qtjambi-serialbus**: - * [**qtjambi-serialbus-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/6.2.6/jar) - * [**qtjambi-serialbus-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/6.2.6/jar) - * [**qtjambi-serialbus-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/6.2.6/jar) - * [**qtjambi-serialbus-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/6.2.6/jar) - * [**qtjambi-serialbus-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/6.2.6/jar) - * [**qtjambi-serialbus-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/6.2.6/jar) - * [**qtjambi-serialbus-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/6.2.6/jar) - * [**qtjambi-serialbus-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/6.2.6/jar) + * [**qtjambi-serialbus-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/6.2.7/jar) + * [**qtjambi-serialbus-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/6.2.7/jar) + * [**qtjambi-serialbus-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/6.2.7/jar) + * [**qtjambi-serialbus-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/6.2.7/jar) + * [**qtjambi-serialbus-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/6.2.7/jar) + * [**qtjambi-serialbus-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/6.2.7/jar) + * [**qtjambi-serialbus-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/6.2.7/jar) + * [**qtjambi-serialbus-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/6.2.7/jar) * [QtSerialPort](https://doc.qt.io/qt-6/qtserialport-index.html) in module **qtjambi-serialport**: - * [**qtjambi-serialport-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/6.2.6/jar) - * [**qtjambi-serialport-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/6.2.6/jar) - * [**qtjambi-serialport-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/6.2.6/jar) - * [**qtjambi-serialport-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/6.2.6/jar) - * [**qtjambi-serialport-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/6.2.6/jar) - * [**qtjambi-serialport-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/6.2.6/jar) - * [**qtjambi-serialport-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/6.2.6/jar) - * [**qtjambi-serialport-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/6.2.6/jar) + * [**qtjambi-serialport-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/6.2.7/jar) + * [**qtjambi-serialport-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/6.2.7/jar) + * [**qtjambi-serialport-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/6.2.7/jar) + * [**qtjambi-serialport-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/6.2.7/jar) + * [**qtjambi-serialport-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/6.2.7/jar) + * [**qtjambi-serialport-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/6.2.7/jar) + * [**qtjambi-serialport-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/6.2.7/jar) + * [**qtjambi-serialport-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/6.2.7/jar) * [QtSql](https://doc.qt.io/qt-6/qtsql-index.html) in module **qtjambi-sql**: - * [**qtjambi-sql-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/6.2.6/jar) - * [**qtjambi-sql-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/6.2.6/jar) - * [**qtjambi-sql-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/6.2.6/jar) - * [**qtjambi-sql-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/6.2.6/jar) - * [**qtjambi-sql-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/6.2.6/jar) - * [**qtjambi-sql-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/6.2.6/jar) - * [**qtjambi-sql-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/6.2.6/jar) - * [**qtjambi-sql-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/6.2.6/jar) + * [**qtjambi-sql-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/6.2.7/jar) + * [**qtjambi-sql-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/6.2.7/jar) + * [**qtjambi-sql-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/6.2.7/jar) + * [**qtjambi-sql-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/6.2.7/jar) + * [**qtjambi-sql-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/6.2.7/jar) + * [**qtjambi-sql-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/6.2.7/jar) + * [**qtjambi-sql-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/6.2.7/jar) + * [**qtjambi-sql-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/6.2.7/jar) * [QtSvg](https://doc.qt.io/qt-6/qtsvg-index.html) in module **qtjambi-svg**: - * [**qtjambi-svg-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/6.2.6/jar) - * [**qtjambi-svg-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/6.2.6/jar) - * [**qtjambi-svg-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/6.2.6/jar) - * [**qtjambi-svg-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/6.2.6/jar) - * [**qtjambi-svg-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/6.2.6/jar) - * [**qtjambi-svg-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/6.2.6/jar) - * [**qtjambi-svg-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/6.2.6/jar) - * [**qtjambi-svg-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/6.2.6/jar) + * [**qtjambi-svg-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/6.2.7/jar) + * [**qtjambi-svg-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/6.2.7/jar) + * [**qtjambi-svg-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/6.2.7/jar) + * [**qtjambi-svg-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/6.2.7/jar) + * [**qtjambi-svg-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/6.2.7/jar) + * [**qtjambi-svg-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/6.2.7/jar) + * [**qtjambi-svg-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/6.2.7/jar) + * [**qtjambi-svg-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/6.2.7/jar) * [QtSvgWidgets](https://doc.qt.io/qt-6/qtsvg-index.html) in module **qtjambi-svgwidgets**: - * [**qtjambi-svgwidgets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets/6.2.6/jar) - * [**qtjambi-svgwidgets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-windows-x64/6.2.6/jar) - * [**qtjambi-svgwidgets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-linux-x64/6.2.6/jar) - * [**qtjambi-svgwidgets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-macos/6.2.6/jar) - * [**qtjambi-svgwidgets-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x86/6.2.6/jar) - * [**qtjambi-svgwidgets-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x64/6.2.6/jar) - * [**qtjambi-svgwidgets-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm/6.2.6/jar) - * [**qtjambi-svgwidgets-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm64/6.2.6/jar) + * [**qtjambi-svgwidgets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets/6.2.7/jar) + * [**qtjambi-svgwidgets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-windows-x64/6.2.7/jar) + * [**qtjambi-svgwidgets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-linux-x64/6.2.7/jar) + * [**qtjambi-svgwidgets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-macos/6.2.7/jar) + * [**qtjambi-svgwidgets-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x86/6.2.7/jar) + * [**qtjambi-svgwidgets-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-x64/6.2.7/jar) + * [**qtjambi-svgwidgets-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm/6.2.7/jar) + * [**qtjambi-svgwidgets-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svgwidgets-native-android-arm64/6.2.7/jar) * [QtStateMachine](https://doc.qt.io/qt-6/qtstatemachine-index.html) in module **qtjambi-statemachine**: - * [**qtjambi-statemachine-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine/6.2.6/jar) - * [**qtjambi-statemachine-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-windows-x64/6.2.6/jar) - * [**qtjambi-statemachine-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-linux-x64/6.2.6/jar) - * [**qtjambi-statemachine-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-macos/6.2.6/jar) - * [**qtjambi-statemachine-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x86/6.2.6/jar) - * [**qtjambi-statemachine-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x64/6.2.6/jar) - * [**qtjambi-statemachine-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm/6.2.6/jar) - * [**qtjambi-statemachine-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm64/6.2.6/jar) + * [**qtjambi-statemachine-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine/6.2.7/jar) + * [**qtjambi-statemachine-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-windows-x64/6.2.7/jar) + * [**qtjambi-statemachine-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-linux-x64/6.2.7/jar) + * [**qtjambi-statemachine-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-macos/6.2.7/jar) + * [**qtjambi-statemachine-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x86/6.2.7/jar) + * [**qtjambi-statemachine-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-x64/6.2.7/jar) + * [**qtjambi-statemachine-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm/6.2.7/jar) + * [**qtjambi-statemachine-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-statemachine-native-android-arm64/6.2.7/jar) * [QtUITools](https://doc.qt.io/qt-6/qtuitools-index.html) in module **qtjambi-uitools**: - * [**qtjambi-uitools-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/6.2.6/jar) - * [**qtjambi-uitools-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/6.2.6/jar) - * [**qtjambi-uitools-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/6.2.6/jar) - * [**qtjambi-uitools-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/6.2.6/jar) - * [**qtjambi-uitools-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/6.2.6/jar) - * [**qtjambi-uitools-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/6.2.6/jar) - * [**qtjambi-uitools-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/6.2.6/jar) - * [**qtjambi-uitools-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/6.2.6/jar) + * [**qtjambi-uitools-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/6.2.7/jar) + * [**qtjambi-uitools-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/6.2.7/jar) + * [**qtjambi-uitools-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/6.2.7/jar) + * [**qtjambi-uitools-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/6.2.7/jar) + * [**qtjambi-uitools-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/6.2.7/jar) + * [**qtjambi-uitools-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/6.2.7/jar) + * [**qtjambi-uitools-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/6.2.7/jar) + * [**qtjambi-uitools-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/6.2.7/jar) * [QtWebChannel](https://doc.qt.io/qt-6/qtwebchannel-index.html) in module **qtjambi-webchannel**: - * [**qtjambi-webchannel-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/6.2.6/jar) - * [**qtjambi-webchannel-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/6.2.6/jar) - * [**qtjambi-webchannel-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/6.2.6/jar) - * [**qtjambi-webchannel-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/6.2.6/jar) - * [**qtjambi-webchannel-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/6.2.6/jar) - * [**qtjambi-webchannel-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/6.2.6/jar) - * [**qtjambi-webchannel-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/6.2.6/jar) - * [**qtjambi-webchannel-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/6.2.6/jar) + * [**qtjambi-webchannel-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/6.2.7/jar) + * [**qtjambi-webchannel-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/6.2.7/jar) + * [**qtjambi-webchannel-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/6.2.7/jar) + * [**qtjambi-webchannel-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/6.2.7/jar) + * [**qtjambi-webchannel-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/6.2.7/jar) + * [**qtjambi-webchannel-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/6.2.7/jar) + * [**qtjambi-webchannel-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/6.2.7/jar) + * [**qtjambi-webchannel-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/6.2.7/jar) * [QtWebEngineCore](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginecore**: - * [**qtjambi-webenginecore-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/6.2.6/jar) - * [**qtjambi-webenginecore-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/6.2.6/jar) - * [**qtjambi-webenginecore-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/6.2.6/jar) - * [**qtjambi-webenginecore-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/6.2.6/jar) + * [**qtjambi-webenginecore-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/6.2.7/jar) + * [**qtjambi-webenginecore-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/6.2.7/jar) + * [**qtjambi-webenginecore-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/6.2.7/jar) + * [**qtjambi-webenginecore-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/6.2.7/jar) * [QtWebEngineWidgets](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginewidgets**: - * [**qtjambi-webenginewidgets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/6.2.6/jar) - * [**qtjambi-webenginewidgets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/6.2.6/jar) - * [**qtjambi-webenginewidgets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/6.2.6/jar) - * [**qtjambi-webenginewidgets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/6.2.6/jar) + * [**qtjambi-webenginewidgets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/6.2.7/jar) + * [**qtjambi-webenginewidgets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/6.2.7/jar) + * [**qtjambi-webenginewidgets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/6.2.7/jar) + * [**qtjambi-webenginewidgets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/6.2.7/jar) * [QtWebEngineQuick](https://doc.qt.io/qt-6/qtwebengine-index.html) in module **qtjambi-webenginequick**: - * [**qtjambi-webenginequick-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick/6.2.6/jar) - * [**qtjambi-webenginequick-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-windows-x64/6.2.6/jar) - * [**qtjambi-webenginequick-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-linux-x64/6.2.6/jar) - * [**qtjambi-webenginequick-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-macos/6.2.6/jar) + * [**qtjambi-webenginequick-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick/6.2.7/jar) + * [**qtjambi-webenginequick-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-windows-x64/6.2.7/jar) + * [**qtjambi-webenginequick-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-linux-x64/6.2.7/jar) + * [**qtjambi-webenginequick-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginequick-native-macos/6.2.7/jar) * [QtWebSockets](https://doc.qt.io/qt-6/qtwebsockets-index.html) in module **qtjambi-websockets**: - * [**qtjambi-websockets-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/6.2.6/jar) - * [**qtjambi-websockets-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/6.2.6/jar) - * [**qtjambi-websockets-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/6.2.6/jar) - * [**qtjambi-websockets-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/6.2.6/jar) - * [**qtjambi-websockets-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/6.2.6/jar) - * [**qtjambi-websockets-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/6.2.6/jar) - * [**qtjambi-websockets-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/6.2.6/jar) - * [**qtjambi-websockets-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/6.2.6/jar) + * [**qtjambi-websockets-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/6.2.7/jar) + * [**qtjambi-websockets-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/6.2.7/jar) + * [**qtjambi-websockets-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/6.2.7/jar) + * [**qtjambi-websockets-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/6.2.7/jar) + * [**qtjambi-websockets-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/6.2.7/jar) + * [**qtjambi-websockets-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/6.2.7/jar) + * [**qtjambi-websockets-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/6.2.7/jar) + * [**qtjambi-websockets-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/6.2.7/jar) * [QtWebView](https://doc.qt.io/qt-6/qtwebview-index.html) in module **qtjambi-webview**: - * [**qtjambi-webview-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/6.2.6/jar) - * [**qtjambi-webview-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/6.2.6/jar) - * [**qtjambi-webview-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/6.2.6/jar) - * [**qtjambi-webview-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/6.2.6/jar) - * [**qtjambi-webview-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/6.2.6/jar) - * [**qtjambi-webview-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/6.2.6/jar) - * [**qtjambi-webview-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/6.2.6/jar) - * [**qtjambi-webview-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/6.2.6/jar) + * [**qtjambi-webview-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/6.2.7/jar) + * [**qtjambi-webview-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/6.2.7/jar) + * [**qtjambi-webview-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/6.2.7/jar) + * [**qtjambi-webview-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/6.2.7/jar) + * [**qtjambi-webview-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/6.2.7/jar) + * [**qtjambi-webview-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/6.2.7/jar) + * [**qtjambi-webview-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/6.2.7/jar) + * [**qtjambi-webview-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/6.2.7/jar) * [QtVirtualKeyboard](https://doc.qt.io/qt-6/qtvirtualkeyboard-index.html) in module **qtjambi-virtualkeyboard**: - * [**qtjambi-virtualkeyboard-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/6.2.6/jar) - * [**qtjambi-virtualkeyboard-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/6.2.6/jar) + * [**qtjambi-virtualkeyboard-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/6.2.7/jar) + * [**qtjambi-virtualkeyboard-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/6.2.7/jar) * [QtXml](https://doc.qt.io/qt-6/qtxml-index.html) in module **qtjambi-xml**: - * [**qtjambi-xml-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/6.2.6/jar) - * [**qtjambi-xml-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/6.2.6/jar) - * [**qtjambi-xml-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/6.2.6/jar) - * [**qtjambi-xml-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/6.2.6/jar) - * [**qtjambi-xml-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/6.2.6/jar) - * [**qtjambi-xml-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/6.2.6/jar) - * [**qtjambi-xml-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/6.2.6/jar) - * [**qtjambi-xml-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/6.2.6/jar) + * [**qtjambi-xml-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/6.2.7/jar) + * [**qtjambi-xml-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/6.2.7/jar) + * [**qtjambi-xml-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/6.2.7/jar) + * [**qtjambi-xml-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/6.2.7/jar) + * [**qtjambi-xml-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/6.2.7/jar) + * [**qtjambi-xml-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/6.2.7/jar) + * [**qtjambi-xml-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/6.2.7/jar) + * [**qtjambi-xml-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/6.2.7/jar) * [QtDesigner](https://doc.qt.io/qt-6/qtdesigner-manual.html) in module **qtjambi-designer**: - * [**qtjambi-designer-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/6.2.6/jar) - * [**qtjambi-designer-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/6.2.6/jar) - * [**qtjambi-designer-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/6.2.6/jar) - * [**qtjambi-designer-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/6.2.6/jar) - * [**qtjambi-designer-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/6.2.6/jar) - * [**qtjambi-designer-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/6.2.6/jar) - * [**qtjambi-designer-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/6.2.6/jar) - * [**qtjambi-designer-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/6.2.6/jar) + * [**qtjambi-designer-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/6.2.7/jar) + * [**qtjambi-designer-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/6.2.7/jar) + * [**qtjambi-designer-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/6.2.7/jar) + * [**qtjambi-designer-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/6.2.7/jar) + * [**qtjambi-designer-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/6.2.7/jar) + * [**qtjambi-designer-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/6.2.7/jar) + * [**qtjambi-designer-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/6.2.7/jar) + * [**qtjambi-designer-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/6.2.7/jar) ### Qt6 Platform-dependent Add-Ons * [Active Qt (Windows only)](https://doc.qt.io/qt-6/activeqt-manual.html) in module **qtjambi-activex**: - * [**qtjambi-activex-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/6.2.6/jar) - * [**qtjambi-activex-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/6.2.6/jar) + * [**qtjambi-activex-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/6.2.7/jar) + * [**qtjambi-activex-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/6.2.7/jar) ### Qt3D * [Qt3DCore](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dcore**: - * [**qtjambi-qt3dcore-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/6.2.6/jar) - * [**qtjambi-qt3dcore-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dcore-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dcore-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/6.2.6/jar) - * [**qtjambi-qt3dcore-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dcore-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dcore-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dcore-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dcore-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/6.2.7/jar) + * [**qtjambi-qt3dcore-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dcore-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dcore-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/6.2.7/jar) + * [**qtjambi-qt3dcore-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dcore-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dcore-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dcore-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/6.2.7/jar) * [Qt3DRender](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3drender**: - * [**qtjambi-qt3drender-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/6.2.6/jar) - * [**qtjambi-qt3drender-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3drender-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3drender-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/6.2.6/jar) - * [**qtjambi-qt3drender-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3drender-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3drender-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3drender-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3drender-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/6.2.7/jar) + * [**qtjambi-qt3drender-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3drender-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3drender-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/6.2.7/jar) + * [**qtjambi-qt3drender-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3drender-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3drender-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3drender-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/6.2.7/jar) * [Qt3DAnimation](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3danimation**: - * [**qtjambi-qt3danimation-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/6.2.6/jar) - * [**qtjambi-qt3danimation-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3danimation-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3danimation-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/6.2.6/jar) - * [**qtjambi-qt3danimation-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3danimation-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3danimation-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3danimation-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3danimation-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/6.2.7/jar) + * [**qtjambi-qt3danimation-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3danimation-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3danimation-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/6.2.7/jar) + * [**qtjambi-qt3danimation-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3danimation-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3danimation-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3danimation-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/6.2.7/jar) * [Qt3DExtras](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dextras**: - * [**qtjambi-qt3dextras-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/6.2.6/jar) - * [**qtjambi-qt3dextras-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dextras-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dextras-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/6.2.6/jar) - * [**qtjambi-qt3dextras-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dextras-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dextras-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dextras-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dextras-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/6.2.7/jar) + * [**qtjambi-qt3dextras-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dextras-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dextras-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/6.2.7/jar) + * [**qtjambi-qt3dextras-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dextras-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dextras-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dextras-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/6.2.7/jar) * [Qt3DInput](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dinput**: - * [**qtjambi-qt3dinput-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/6.2.6/jar) - * [**qtjambi-qt3dinput-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dinput-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dinput-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/6.2.6/jar) - * [**qtjambi-qt3dinput-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dinput-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dinput-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dinput-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dinput-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/6.2.7/jar) + * [**qtjambi-qt3dinput-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dinput-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dinput-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/6.2.7/jar) + * [**qtjambi-qt3dinput-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dinput-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dinput-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dinput-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/6.2.7/jar) * [Qt3DLogic](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dlogic**: - * [**qtjambi-qt3dlogic-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dlogic-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dlogic-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dlogic-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/6.2.7/jar) * [Qt3DQuick](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquick**: - * [**qtjambi-qt3dquick-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/6.2.6/jar) - * [**qtjambi-qt3dquick-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dquick-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dquick-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/6.2.6/jar) - * [**qtjambi-qt3dquick-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dquick-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dquick-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dquick-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dquick-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/6.2.7/jar) + * [**qtjambi-qt3dquick-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dquick-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dquick-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/6.2.7/jar) + * [**qtjambi-qt3dquick-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dquick-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dquick-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dquick-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/6.2.7/jar) * [Qt3DQuickExtras](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquickextras**: - * [**qtjambi-qt3dquickextras-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dquickextras-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dquickextras-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dquickextras-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/6.2.7/jar) * [Qt3DQuickScene3D](https://doc.qt.io/qt-6/qt3d-index.html) in module **qtjambi-qt3dquickscene2d**: - * [**qtjambi-qt3dquickscene2d-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/6.2.6/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/6.2.6/jar) + * [**qtjambi-qt3dquickscene2d-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/6.2.7/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/6.2.7/jar) ### QtJambi Plugins * JDBC Sql Plugin: - * [**qtjambi-plugin-qsqljdbc-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/6.2.6/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-common-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/6.2.6/jar) + * [**qtjambi-plugin-qsqljdbc-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/6.2.7/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-common-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/6.2.7/jar) ### QtJambi Tools * [QtJambi User Interface Compiler (UIC)](https://doc.qt.io/qt-6/designer-using-a-ui-file.html#compile-time-form-processing): - * [**qtjambi-uic-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/6.2.6/jar) - * [**qtjambi-uic-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/6.2.6/jar) - * [**qtjambi-uic-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/6.2.6/jar) - * [**qtjambi-uic-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/6.2.6/jar) - * [**qtjambi-uic-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/6.2.6/jar) - * [**qtjambi-uic-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/6.2.6/jar) - * [**qtjambi-uic-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/6.2.6/jar) - * [**qtjambi-uic-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/6.2.6/jar) + * [**qtjambi-uic-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/6.2.7/jar) + * [**qtjambi-uic-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/6.2.7/jar) + * [**qtjambi-uic-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/6.2.7/jar) + * [**qtjambi-uic-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/6.2.7/jar) + * [**qtjambi-uic-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/6.2.7/jar) + * [**qtjambi-uic-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/6.2.7/jar) + * [**qtjambi-uic-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/6.2.7/jar) + * [**qtjambi-uic-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/6.2.7/jar) * QtJambi Deployer: - * [**qtjambi-deployer-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/6.2.6/jar) - * [**qtjambi-deployer-native-windows-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/6.2.6/jar) - * [**qtjambi-deployer-native-linux-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/6.2.6/jar) - * [**qtjambi-deployer-native-macos-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/6.2.6/jar) - * [**qtjambi-deployer-native-android-x86-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/6.2.6/jar) - * [**qtjambi-deployer-native-android-x64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/6.2.6/jar) - * [**qtjambi-deployer-native-android-arm-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/6.2.6/jar) - * [**qtjambi-deployer-native-android-arm64-6.2.6.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/6.2.6/jar) + * [**qtjambi-deployer-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/6.2.7/jar) + * [**qtjambi-deployer-native-windows-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/6.2.7/jar) + * [**qtjambi-deployer-native-linux-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/6.2.7/jar) + * [**qtjambi-deployer-native-macos-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/6.2.7/jar) + * [**qtjambi-deployer-native-android-x86-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/6.2.7/jar) + * [**qtjambi-deployer-native-android-x64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/6.2.7/jar) + * [**qtjambi-deployer-native-android-arm-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/6.2.7/jar) + * [**qtjambi-deployer-native-android-arm64-6.2.7.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/6.2.7/jar) ## QtJambi for Qt 5.15 -QtJambi 5.15.8 requires Qt 5.15.x whereas x can be any patch version. +QtJambi 5.15.9 requires Qt 5.15.x whereas x can be any patch version. Following Qt 5.15 modules are provided by QtJambi: ### Qt5 Essentials * [QtCore](https://doc.qt.io/qt-5/qtcore-index.html), [QtGui](https://doc.qt.io/qt-5/qtgui-index.html) and [QtWidgets](https://doc.qt.io/qt-5/qtwidgets-index.html) in module **qtjambi**: - * [**qtjambi-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/5.15.8/jar) - * [**qtjambi-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/5.15.8/jar) - * [**qtjambi-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/5.15.8/jar) - * [**qtjambi-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/5.15.8/jar) - * [**qtjambi-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/5.15.8/jar) - * [**qtjambi-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/5.15.8/jar) - * [**qtjambi-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/5.15.8/jar) - * [**qtjambi-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/5.15.8/jar) + * [**qtjambi-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi/5.15.9/jar) + * [**qtjambi-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-windows-x64/5.15.9/jar) + * [**qtjambi-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-linux-x64/5.15.9/jar) + * [**qtjambi-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-macos/5.15.9/jar) + * [**qtjambi-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x86/5.15.9/jar) + * [**qtjambi-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-x64/5.15.9/jar) + * [**qtjambi-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm/5.15.9/jar) + * [**qtjambi-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-native-android-arm64/5.15.9/jar) * [QtMultimedia](https://doc.qt.io/qt-5/qtmultimedia-index.html) in module **qtjambi-multimedia**: - * [**qtjambi-multimedia-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/5.15.8/jar) - * [**qtjambi-multimedia-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/5.15.8/jar) - * [**qtjambi-multimedia-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/5.15.8/jar) - * [**qtjambi-multimedia-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/5.15.8/jar) - * [**qtjambi-multimedia-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/5.15.8/jar) - * [**qtjambi-multimedia-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/5.15.8/jar) - * [**qtjambi-multimedia-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/5.15.8/jar) - * [**qtjambi-multimedia-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/5.15.8/jar) + * [**qtjambi-multimedia-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia/5.15.9/jar) + * [**qtjambi-multimedia-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-windows-x64/5.15.9/jar) + * [**qtjambi-multimedia-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-linux-x64/5.15.9/jar) + * [**qtjambi-multimedia-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-macos/5.15.9/jar) + * [**qtjambi-multimedia-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x86/5.15.9/jar) + * [**qtjambi-multimedia-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-x64/5.15.9/jar) + * [**qtjambi-multimedia-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm/5.15.9/jar) + * [**qtjambi-multimedia-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimedia-native-android-arm64/5.15.9/jar) * [QtMultimediaWidgets](https://doc.qt.io/qt-5/qtmultimedia-index.html) in module **qtjambi-multimediawidgets**: - * [**qtjambi-multimediawidgets-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/5.15.8/jar) - * [**qtjambi-multimediawidgets-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/5.15.8/jar) + * [**qtjambi-multimediawidgets-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-windows-x64/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-linux-x64/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-macos/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x86/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-x64/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm/5.15.9/jar) + * [**qtjambi-multimediawidgets-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-multimediawidgets-native-android-arm64/5.15.9/jar) * [QtNetwork](https://doc.qt.io/qt-5/qtnetwork-index.html) in module **qtjambi-network**: - * [**qtjambi-network-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/5.15.8/jar) - * [**qtjambi-network-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/5.15.8/jar) - * [**qtjambi-network-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/5.15.8/jar) - * [**qtjambi-network-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/5.15.8/jar) - * [**qtjambi-network-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/5.15.8/jar) - * [**qtjambi-network-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/5.15.8/jar) - * [**qtjambi-network-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/5.15.8/jar) - * [**qtjambi-network-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/5.15.8/jar) + * [**qtjambi-network-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network/5.15.9/jar) + * [**qtjambi-network-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-windows-x64/5.15.9/jar) + * [**qtjambi-network-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-linux-x64/5.15.9/jar) + * [**qtjambi-network-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-macos/5.15.9/jar) + * [**qtjambi-network-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x86/5.15.9/jar) + * [**qtjambi-network-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-x64/5.15.9/jar) + * [**qtjambi-network-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm/5.15.9/jar) + * [**qtjambi-network-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-network-native-android-arm64/5.15.9/jar) * [QtQml](https://doc.qt.io/qt-5/qtqml-index.html) in module **qtjambi-qml**: - * [**qtjambi-qml-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/5.15.8/jar) - * [**qtjambi-qml-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/5.15.8/jar) - * [**qtjambi-qml-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/5.15.8/jar) - * [**qtjambi-qml-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/5.15.8/jar) - * [**qtjambi-qml-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/5.15.8/jar) - * [**qtjambi-qml-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/5.15.8/jar) - * [**qtjambi-qml-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/5.15.8/jar) - * [**qtjambi-qml-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/5.15.8/jar) + * [**qtjambi-qml-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml/5.15.9/jar) + * [**qtjambi-qml-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-windows-x64/5.15.9/jar) + * [**qtjambi-qml-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-linux-x64/5.15.9/jar) + * [**qtjambi-qml-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-macos/5.15.9/jar) + * [**qtjambi-qml-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x86/5.15.9/jar) + * [**qtjambi-qml-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-x64/5.15.9/jar) + * [**qtjambi-qml-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm/5.15.9/jar) + * [**qtjambi-qml-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qml-native-android-arm64/5.15.9/jar) * [QtQuick](https://doc.qt.io/qt-5/qtquick-index.html) in module **qtjambi-quick**: - * [**qtjambi-quick-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/5.15.8/jar) - * [**qtjambi-quick-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/5.15.8/jar) - * [**qtjambi-quick-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/5.15.8/jar) - * [**qtjambi-quick-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/5.15.8/jar) - * [**qtjambi-quick-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/5.15.8/jar) - * [**qtjambi-quick-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/5.15.8/jar) - * [**qtjambi-quick-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/5.15.8/jar) - * [**qtjambi-quick-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/5.15.8/jar) + * [**qtjambi-quick-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick/5.15.9/jar) + * [**qtjambi-quick-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-windows-x64/5.15.9/jar) + * [**qtjambi-quick-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-linux-x64/5.15.9/jar) + * [**qtjambi-quick-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-macos/5.15.9/jar) + * [**qtjambi-quick-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x86/5.15.9/jar) + * [**qtjambi-quick-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-x64/5.15.9/jar) + * [**qtjambi-quick-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm/5.15.9/jar) + * [**qtjambi-quick-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick-native-android-arm64/5.15.9/jar) * [QtQuickControls](https://doc.qt.io/qt-5/qtquickcontrols-index.html) in module **qtjambi-quickcontrols**: - * [**qtjambi-quickcontrols-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/5.15.8/jar) - * [**qtjambi-quickcontrols-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/5.15.8/jar) - * [**qtjambi-quickcontrols-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/5.15.8/jar) - * [**qtjambi-quickcontrols-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/5.15.8/jar) - * [**qtjambi-quickcontrols-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/5.15.8/jar) - * [**qtjambi-quickcontrols-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/5.15.8/jar) - * [**qtjambi-quickcontrols-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/5.15.8/jar) - * [**qtjambi-quickcontrols-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/5.15.8/jar) + * [**qtjambi-quickcontrols-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols/5.15.9/jar) + * [**qtjambi-quickcontrols-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-windows-x64/5.15.9/jar) + * [**qtjambi-quickcontrols-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-linux-x64/5.15.9/jar) + * [**qtjambi-quickcontrols-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-macos/5.15.9/jar) + * [**qtjambi-quickcontrols-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x86/5.15.9/jar) + * [**qtjambi-quickcontrols-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-x64/5.15.9/jar) + * [**qtjambi-quickcontrols-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm/5.15.9/jar) + * [**qtjambi-quickcontrols-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickcontrols-native-android-arm64/5.15.9/jar) * [QtQuickTest](https://doc.qt.io/qt-5/qtquicktest-index.html) in module **qtjambi-quicktest**: - * [**qtjambi-quicktest-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/5.15.8/jar) - * [**qtjambi-quicktest-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/5.15.8/jar) - * [**qtjambi-quicktest-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/5.15.8/jar) - * [**qtjambi-quicktest-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/5.15.8/jar) - * [**qtjambi-quicktest-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/5.15.8/jar) - * [**qtjambi-quicktest-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/5.15.8/jar) - * [**qtjambi-quicktest-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/5.15.8/jar) - * [**qtjambi-quicktest-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/5.15.8/jar) + * [**qtjambi-quicktest-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest/5.15.9/jar) + * [**qtjambi-quicktest-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-windows-x64/5.15.9/jar) + * [**qtjambi-quicktest-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-linux-x64/5.15.9/jar) + * [**qtjambi-quicktest-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-macos/5.15.9/jar) + * [**qtjambi-quicktest-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x86/5.15.9/jar) + * [**qtjambi-quicktest-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-x64/5.15.9/jar) + * [**qtjambi-quicktest-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm/5.15.9/jar) + * [**qtjambi-quicktest-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quicktest-native-android-arm64/5.15.9/jar) * [QtSql](https://doc.qt.io/qt-5/qtsql-index.html) in module **qtjambi-sql**: - * [**qtjambi-sql-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/5.15.8/jar) - * [**qtjambi-sql-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/5.15.8/jar) - * [**qtjambi-sql-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/5.15.8/jar) - * [**qtjambi-sql-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/5.15.8/jar) - * [**qtjambi-sql-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/5.15.8/jar) - * [**qtjambi-sql-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/5.15.8/jar) - * [**qtjambi-sql-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/5.15.8/jar) - * [**qtjambi-sql-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/5.15.8/jar) + * [**qtjambi-sql-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql/5.15.9/jar) + * [**qtjambi-sql-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-windows-x64/5.15.9/jar) + * [**qtjambi-sql-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-linux-x64/5.15.9/jar) + * [**qtjambi-sql-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-macos/5.15.9/jar) + * [**qtjambi-sql-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x86/5.15.9/jar) + * [**qtjambi-sql-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-x64/5.15.9/jar) + * [**qtjambi-sql-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm/5.15.9/jar) + * [**qtjambi-sql-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sql-native-android-arm64/5.15.9/jar) * [QtTest](https://doc.qt.io/qt-5/qttest-index.html) in module **qtjambi-test**: - * [**qtjambi-test-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/5.15.8/jar) - * [**qtjambi-test-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/5.15.8/jar) - * [**qtjambi-test-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/5.15.8/jar) - * [**qtjambi-test-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/5.15.8/jar) - * [**qtjambi-test-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/5.15.8/jar) - * [**qtjambi-test-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/5.15.8/jar) - * [**qtjambi-test-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/5.15.8/jar) - * [**qtjambi-test-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/5.15.8/jar) + * [**qtjambi-test-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test/5.15.9/jar) + * [**qtjambi-test-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-windows-x64/5.15.9/jar) + * [**qtjambi-test-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-linux-x64/5.15.9/jar) + * [**qtjambi-test-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-macos/5.15.9/jar) + * [**qtjambi-test-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x86/5.15.9/jar) + * [**qtjambi-test-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-x64/5.15.9/jar) + * [**qtjambi-test-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm/5.15.9/jar) + * [**qtjambi-test-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-test-native-android-arm64/5.15.9/jar) ### Qt5 Add-Ons * [QtBluetooth](https://doc.qt.io/qt-5/qtbluetooth-index.html) in module **qtjambi-bluetooth**: - * [**qtjambi-bluetooth-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/5.15.8/jar) - * [**qtjambi-bluetooth-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/5.15.8/jar) - * [**qtjambi-bluetooth-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/5.15.8/jar) - * [**qtjambi-bluetooth-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/5.15.8/jar) - * [**qtjambi-bluetooth-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/5.15.8/jar) - * [**qtjambi-bluetooth-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/5.15.8/jar) - * [**qtjambi-bluetooth-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/5.15.8/jar) - * [**qtjambi-bluetooth-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/5.15.8/jar) + * [**qtjambi-bluetooth-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth/5.15.9/jar) + * [**qtjambi-bluetooth-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-windows-x64/5.15.9/jar) + * [**qtjambi-bluetooth-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-linux-x64/5.15.9/jar) + * [**qtjambi-bluetooth-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-macos/5.15.9/jar) + * [**qtjambi-bluetooth-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x86/5.15.9/jar) + * [**qtjambi-bluetooth-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-x64/5.15.9/jar) + * [**qtjambi-bluetooth-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm/5.15.9/jar) + * [**qtjambi-bluetooth-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-bluetooth-native-android-arm64/5.15.9/jar) * [QtConcurrent](https://doc.qt.io/qt-5/qtconcurrent-index.html) in module **qtjambi-concurrent**: - * [**qtjambi-concurrent-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/5.15.8/jar) - * [**qtjambi-concurrent-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/5.15.8/jar) - * [**qtjambi-concurrent-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/5.15.8/jar) - * [**qtjambi-concurrent-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/5.15.8/jar) - * [**qtjambi-concurrent-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/5.15.8/jar) - * [**qtjambi-concurrent-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/5.15.8/jar) - * [**qtjambi-concurrent-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/5.15.8/jar) - * [**qtjambi-concurrent-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/5.15.8/jar) + * [**qtjambi-concurrent-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent/5.15.9/jar) + * [**qtjambi-concurrent-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-windows-x64/5.15.9/jar) + * [**qtjambi-concurrent-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-linux-x64/5.15.9/jar) + * [**qtjambi-concurrent-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-macos/5.15.9/jar) + * [**qtjambi-concurrent-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x86/5.15.9/jar) + * [**qtjambi-concurrent-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-x64/5.15.9/jar) + * [**qtjambi-concurrent-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm/5.15.9/jar) + * [**qtjambi-concurrent-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-concurrent-native-android-arm64/5.15.9/jar) * [QtDBus](https://doc.qt.io/qt-5/qtdbus-index.html) in module **qtjambi-dbus**: - * [**qtjambi-dbus-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/5.15.8/jar) - * [**qtjambi-dbus-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/5.15.8/jar) - * [**qtjambi-dbus-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/5.15.8/jar) - * [**qtjambi-dbus-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/5.15.8/jar) - * [**qtjambi-dbus-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/5.15.8/jar) - * [**qtjambi-dbus-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/5.15.8/jar) - * [**qtjambi-dbus-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/5.15.8/jar) - * [**qtjambi-dbus-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/5.15.8/jar) + * [**qtjambi-dbus-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus/5.15.9/jar) + * [**qtjambi-dbus-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-windows-x64/5.15.9/jar) + * [**qtjambi-dbus-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-linux-x64/5.15.9/jar) + * [**qtjambi-dbus-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-macos/5.15.9/jar) + * [**qtjambi-dbus-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x86/5.15.9/jar) + * [**qtjambi-dbus-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-x64/5.15.9/jar) + * [**qtjambi-dbus-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm/5.15.9/jar) + * [**qtjambi-dbus-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-dbus-native-android-arm64/5.15.9/jar) * [QtGamepad](https://doc.qt.io/qt-5/qtgamepad-index.html) in module **qtjambi-gamepad**: - * [**qtjambi-gamepad-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad/5.15.8/jar) - * [**qtjambi-gamepad-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-windows-x64/5.15.8/jar) - * [**qtjambi-gamepad-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-linux-x64/5.15.8/jar) - * [**qtjambi-gamepad-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-macos/5.15.8/jar) - * [**qtjambi-gamepad-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-x86/5.15.8/jar) - * [**qtjambi-gamepad-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-x64/5.15.8/jar) - * [**qtjambi-gamepad-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-arm/5.15.8/jar) - * [**qtjambi-gamepad-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-arm64/5.15.8/jar) + * [**qtjambi-gamepad-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad/5.15.9/jar) + * [**qtjambi-gamepad-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-windows-x64/5.15.9/jar) + * [**qtjambi-gamepad-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-linux-x64/5.15.9/jar) + * [**qtjambi-gamepad-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-macos/5.15.9/jar) + * [**qtjambi-gamepad-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-x86/5.15.9/jar) + * [**qtjambi-gamepad-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-x64/5.15.9/jar) + * [**qtjambi-gamepad-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-arm/5.15.9/jar) + * [**qtjambi-gamepad-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-gamepad-native-android-arm64/5.15.9/jar) * [QtHelp](https://doc.qt.io/qt-5/qthelp-index.html) in module **qtjambi-help**: - * [**qtjambi-help-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/5.15.8/jar) - * [**qtjambi-help-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/5.15.8/jar) - * [**qtjambi-help-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/5.15.8/jar) - * [**qtjambi-help-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/5.15.8/jar) - * [**qtjambi-help-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/5.15.8/jar) - * [**qtjambi-help-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/5.15.8/jar) - * [**qtjambi-help-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/5.15.8/jar) - * [**qtjambi-help-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/5.15.8/jar) + * [**qtjambi-help-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help/5.15.9/jar) + * [**qtjambi-help-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-windows-x64/5.15.9/jar) + * [**qtjambi-help-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-linux-x64/5.15.9/jar) + * [**qtjambi-help-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-macos/5.15.9/jar) + * [**qtjambi-help-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x86/5.15.9/jar) + * [**qtjambi-help-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-x64/5.15.9/jar) + * [**qtjambi-help-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm/5.15.9/jar) + * [**qtjambi-help-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-help-native-android-arm64/5.15.9/jar) * [QtLocation](https://doc.qt.io/qt-5/qtlocation-index.html) in module **qtjambi-location**: - * [**qtjambi-location-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location/5.15.8/jar) - * [**qtjambi-location-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-windows-x64/5.15.8/jar) - * [**qtjambi-location-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-linux-x64/5.15.8/jar) - * [**qtjambi-location-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-macos/5.15.8/jar) - * [**qtjambi-location-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-x86/5.15.8/jar) - * [**qtjambi-location-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-x64/5.15.8/jar) - * [**qtjambi-location-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-arm/5.15.8/jar) - * [**qtjambi-location-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-arm64/5.15.8/jar) + * [**qtjambi-location-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location/5.15.9/jar) + * [**qtjambi-location-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-windows-x64/5.15.9/jar) + * [**qtjambi-location-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-linux-x64/5.15.9/jar) + * [**qtjambi-location-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-macos/5.15.9/jar) + * [**qtjambi-location-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-x86/5.15.9/jar) + * [**qtjambi-location-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-x64/5.15.9/jar) + * [**qtjambi-location-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-arm/5.15.9/jar) + * [**qtjambi-location-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-location-native-android-arm64/5.15.9/jar) * [QtNfc](https://doc.qt.io/qt-5/qtnfc-index.html) in module **qtjambi-nfc**: - * [**qtjambi-nfc-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/5.15.8/jar) - * [**qtjambi-nfc-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/5.15.8/jar) - * [**qtjambi-nfc-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/5.15.8/jar) - * [**qtjambi-nfc-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/5.15.8/jar) - * [**qtjambi-nfc-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/5.15.8/jar) - * [**qtjambi-nfc-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/5.15.8/jar) - * [**qtjambi-nfc-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/5.15.8/jar) - * [**qtjambi-nfc-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/5.15.8/jar) + * [**qtjambi-nfc-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc/5.15.9/jar) + * [**qtjambi-nfc-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-windows-x64/5.15.9/jar) + * [**qtjambi-nfc-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-linux-x64/5.15.9/jar) + * [**qtjambi-nfc-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-macos/5.15.9/jar) + * [**qtjambi-nfc-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x86/5.15.9/jar) + * [**qtjambi-nfc-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-x64/5.15.9/jar) + * [**qtjambi-nfc-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm/5.15.9/jar) + * [**qtjambi-nfc-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-nfc-native-android-arm64/5.15.9/jar) * [QtPositioning](https://doc.qt.io/qt-5/qtpositioning-index.html) in module **qtjambi-positioning**: - * [**qtjambi-positioning-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/5.15.8/jar) - * [**qtjambi-positioning-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/5.15.8/jar) - * [**qtjambi-positioning-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/5.15.8/jar) - * [**qtjambi-positioning-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/5.15.8/jar) - * [**qtjambi-positioning-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/5.15.8/jar) - * [**qtjambi-positioning-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/5.15.8/jar) - * [**qtjambi-positioning-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/5.15.8/jar) - * [**qtjambi-positioning-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/5.15.8/jar) + * [**qtjambi-positioning-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning/5.15.9/jar) + * [**qtjambi-positioning-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-windows-x64/5.15.9/jar) + * [**qtjambi-positioning-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-linux-x64/5.15.9/jar) + * [**qtjambi-positioning-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-macos/5.15.9/jar) + * [**qtjambi-positioning-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x86/5.15.9/jar) + * [**qtjambi-positioning-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-x64/5.15.9/jar) + * [**qtjambi-positioning-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm/5.15.9/jar) + * [**qtjambi-positioning-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-positioning-native-android-arm64/5.15.9/jar) * [QtPrintSupport](https://doc.qt.io/qt-5/qtprintsupport-index.html) in module **qtjambi-printsupport**: - * [**qtjambi-printsupport-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/5.15.8/jar) - * [**qtjambi-printsupport-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/5.15.8/jar) - * [**qtjambi-printsupport-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/5.15.8/jar) - * [**qtjambi-printsupport-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/5.15.8/jar) - * [**qtjambi-printsupport-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/5.15.8/jar) - * [**qtjambi-printsupport-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/5.15.8/jar) - * [**qtjambi-printsupport-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/5.15.8/jar) - * [**qtjambi-printsupport-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/5.15.8/jar) + * [**qtjambi-printsupport-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport/5.15.9/jar) + * [**qtjambi-printsupport-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-windows-x64/5.15.9/jar) + * [**qtjambi-printsupport-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-linux-x64/5.15.9/jar) + * [**qtjambi-printsupport-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-macos/5.15.9/jar) + * [**qtjambi-printsupport-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x86/5.15.9/jar) + * [**qtjambi-printsupport-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-x64/5.15.9/jar) + * [**qtjambi-printsupport-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm/5.15.9/jar) + * [**qtjambi-printsupport-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-printsupport-native-android-arm64/5.15.9/jar) * [QtPurchasing](https://doc.qt.io/qt-5/qtpurchasing-index.html) in module **qtjambi-purchasing**: - * [**qtjambi-purchasing-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing/5.15.8/jar) - * [**qtjambi-purchasing-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-windows-x64/5.15.8/jar) - * [**qtjambi-purchasing-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-linux-x64/5.15.8/jar) - * [**qtjambi-purchasing-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-macos/5.15.8/jar) - * [**qtjambi-purchasing-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-x86/5.15.8/jar) - * [**qtjambi-purchasing-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-x64/5.15.8/jar) - * [**qtjambi-purchasing-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-arm/5.15.8/jar) - * [**qtjambi-purchasing-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-arm64/5.15.8/jar) + * [**qtjambi-purchasing-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing/5.15.9/jar) + * [**qtjambi-purchasing-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-windows-x64/5.15.9/jar) + * [**qtjambi-purchasing-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-linux-x64/5.15.9/jar) + * [**qtjambi-purchasing-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-macos/5.15.9/jar) + * [**qtjambi-purchasing-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-x86/5.15.9/jar) + * [**qtjambi-purchasing-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-x64/5.15.9/jar) + * [**qtjambi-purchasing-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-arm/5.15.9/jar) + * [**qtjambi-purchasing-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-purchasing-native-android-arm64/5.15.9/jar) * [QtQuickWidgets](https://doc.qt.io/qt-5/qtquickwidgets-module.html) in module **qtjambi-quickwidgets**: - * [**qtjambi-quickwidgets-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/5.15.8/jar) - * [**qtjambi-quickwidgets-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/5.15.8/jar) - * [**qtjambi-quickwidgets-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/5.15.8/jar) - * [**qtjambi-quickwidgets-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/5.15.8/jar) - * [**qtjambi-quickwidgets-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/5.15.8/jar) - * [**qtjambi-quickwidgets-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/5.15.8/jar) - * [**qtjambi-quickwidgets-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/5.15.8/jar) - * [**qtjambi-quickwidgets-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/5.15.8/jar) + * [**qtjambi-quickwidgets-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets/5.15.9/jar) + * [**qtjambi-quickwidgets-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-windows-x64/5.15.9/jar) + * [**qtjambi-quickwidgets-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-linux-x64/5.15.9/jar) + * [**qtjambi-quickwidgets-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-macos/5.15.9/jar) + * [**qtjambi-quickwidgets-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x86/5.15.9/jar) + * [**qtjambi-quickwidgets-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-x64/5.15.9/jar) + * [**qtjambi-quickwidgets-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm/5.15.9/jar) + * [**qtjambi-quickwidgets-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quickwidgets-native-android-arm64/5.15.9/jar) * [QtRemoteObjects](https://doc.qt.io/qt-5/qtremoteobjects-module.html) in module **qtjambi-remoteobjects**: - * [**qtjambi-remoteobjects-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/5.15.8/jar) - * [**qtjambi-remoteobjects-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/5.15.8/jar) - * [**qtjambi-remoteobjects-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/5.15.8/jar) - * [**qtjambi-remoteobjects-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/5.15.8/jar) - * [**qtjambi-remoteobjects-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/5.15.8/jar) - * [**qtjambi-remoteobjects-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/5.15.8/jar) - * [**qtjambi-remoteobjects-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/5.15.8/jar) - * [**qtjambi-remoteobjects-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/5.15.8/jar) + * [**qtjambi-remoteobjects-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects/5.15.9/jar) + * [**qtjambi-remoteobjects-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-windows-x64/5.15.9/jar) + * [**qtjambi-remoteobjects-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-linux-x64/5.15.9/jar) + * [**qtjambi-remoteobjects-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-macos/5.15.9/jar) + * [**qtjambi-remoteobjects-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x86/5.15.9/jar) + * [**qtjambi-remoteobjects-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-x64/5.15.9/jar) + * [**qtjambi-remoteobjects-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm/5.15.9/jar) + * [**qtjambi-remoteobjects-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-remoteobjects-native-android-arm64/5.15.9/jar) * [QtScript](https://doc.qt.io/qt-5/qtscript-module.html) in module **qtjambi-script**: - * [**qtjambi-script-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script/5.15.8/jar) - * [**qtjambi-script-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-windows-x64/5.15.8/jar) - * [**qtjambi-script-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-linux-x64/5.15.8/jar) - * [**qtjambi-script-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-macos/5.15.8/jar) - * [**qtjambi-script-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-x86/5.15.8/jar) - * [**qtjambi-script-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-x64/5.15.8/jar) - * [**qtjambi-script-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-arm/5.15.8/jar) - * [**qtjambi-script-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-arm64/5.15.8/jar) + * [**qtjambi-script-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script/5.15.9/jar) + * [**qtjambi-script-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-windows-x64/5.15.9/jar) + * [**qtjambi-script-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-linux-x64/5.15.9/jar) + * [**qtjambi-script-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-macos/5.15.9/jar) + * [**qtjambi-script-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-x86/5.15.9/jar) + * [**qtjambi-script-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-x64/5.15.9/jar) + * [**qtjambi-script-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-arm/5.15.9/jar) + * [**qtjambi-script-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-script-native-android-arm64/5.15.9/jar) * [QtScriptTools](https://doc.qt.io/qt-5/qtscripttools-module.html) in module **qtjambi-scripttools**: - * [**qtjambi-scripttools-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools/5.15.8/jar) - * [**qtjambi-scripttools-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-windows-x64/5.15.8/jar) - * [**qtjambi-scripttools-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-linux-x64/5.15.8/jar) - * [**qtjambi-scripttools-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-macos/5.15.8/jar) - * [**qtjambi-scripttools-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-x86/5.15.8/jar) - * [**qtjambi-scripttools-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-x64/5.15.8/jar) - * [**qtjambi-scripttools-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-arm/5.15.8/jar) - * [**qtjambi-scripttools-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-arm64/5.15.8/jar) + * [**qtjambi-scripttools-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools/5.15.9/jar) + * [**qtjambi-scripttools-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-windows-x64/5.15.9/jar) + * [**qtjambi-scripttools-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-linux-x64/5.15.9/jar) + * [**qtjambi-scripttools-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-macos/5.15.9/jar) + * [**qtjambi-scripttools-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-x86/5.15.9/jar) + * [**qtjambi-scripttools-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-x64/5.15.9/jar) + * [**qtjambi-scripttools-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-arm/5.15.9/jar) + * [**qtjambi-scripttools-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scripttools-native-android-arm64/5.15.9/jar) * [QtSCXML](https://doc.qt.io/qt-5/qtscxml-index.html) in module **qtjambi-scxml**: - * [**qtjambi-scxml-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/5.15.8/jar) - * [**qtjambi-scxml-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/5.15.8/jar) - * [**qtjambi-scxml-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/5.15.8/jar) - * [**qtjambi-scxml-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/5.15.8/jar) - * [**qtjambi-scxml-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/5.15.8/jar) - * [**qtjambi-scxml-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/5.15.8/jar) - * [**qtjambi-scxml-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/5.15.8/jar) - * [**qtjambi-scxml-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/5.15.8/jar) + * [**qtjambi-scxml-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml/5.15.9/jar) + * [**qtjambi-scxml-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-windows-x64/5.15.9/jar) + * [**qtjambi-scxml-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-linux-x64/5.15.9/jar) + * [**qtjambi-scxml-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-macos/5.15.9/jar) + * [**qtjambi-scxml-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x86/5.15.9/jar) + * [**qtjambi-scxml-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-x64/5.15.9/jar) + * [**qtjambi-scxml-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm/5.15.9/jar) + * [**qtjambi-scxml-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-scxml-native-android-arm64/5.15.9/jar) * [QtSensors](https://doc.qt.io/qt-5/qtsensors-index.html) in module **qtjambi-sensors**: - * [**qtjambi-sensors-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/5.15.8/jar) - * [**qtjambi-sensors-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/5.15.8/jar) - * [**qtjambi-sensors-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/5.15.8/jar) - * [**qtjambi-sensors-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/5.15.8/jar) - * [**qtjambi-sensors-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/5.15.8/jar) - * [**qtjambi-sensors-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/5.15.8/jar) - * [**qtjambi-sensors-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/5.15.8/jar) - * [**qtjambi-sensors-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/5.15.8/jar) + * [**qtjambi-sensors-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors/5.15.9/jar) + * [**qtjambi-sensors-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-windows-x64/5.15.9/jar) + * [**qtjambi-sensors-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-linux-x64/5.15.9/jar) + * [**qtjambi-sensors-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-macos/5.15.9/jar) + * [**qtjambi-sensors-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x86/5.15.9/jar) + * [**qtjambi-sensors-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-x64/5.15.9/jar) + * [**qtjambi-sensors-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm/5.15.9/jar) + * [**qtjambi-sensors-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-sensors-native-android-arm64/5.15.9/jar) * [QtSerialBus](https://doc.qt.io/qt-5/qtserialbus-index.html) in module **qtjambi-serialbus**: - * [**qtjambi-serialbus-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/5.15.8/jar) - * [**qtjambi-serialbus-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/5.15.8/jar) - * [**qtjambi-serialbus-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/5.15.8/jar) - * [**qtjambi-serialbus-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/5.15.8/jar) - * [**qtjambi-serialbus-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/5.15.8/jar) - * [**qtjambi-serialbus-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/5.15.8/jar) - * [**qtjambi-serialbus-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/5.15.8/jar) - * [**qtjambi-serialbus-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/5.15.8/jar) + * [**qtjambi-serialbus-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus/5.15.9/jar) + * [**qtjambi-serialbus-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-windows-x64/5.15.9/jar) + * [**qtjambi-serialbus-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-linux-x64/5.15.9/jar) + * [**qtjambi-serialbus-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-macos/5.15.9/jar) + * [**qtjambi-serialbus-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x86/5.15.9/jar) + * [**qtjambi-serialbus-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-x64/5.15.9/jar) + * [**qtjambi-serialbus-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm/5.15.9/jar) + * [**qtjambi-serialbus-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialbus-native-android-arm64/5.15.9/jar) * [QtSerialPort](https://doc.qt.io/qt-5/qtserialport-index.html) in module **qtjambi-serialport**: - * [**qtjambi-serialport-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/5.15.8/jar) - * [**qtjambi-serialport-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/5.15.8/jar) - * [**qtjambi-serialport-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/5.15.8/jar) - * [**qtjambi-serialport-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/5.15.8/jar) - * [**qtjambi-serialport-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/5.15.8/jar) - * [**qtjambi-serialport-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/5.15.8/jar) - * [**qtjambi-serialport-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/5.15.8/jar) - * [**qtjambi-serialport-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/5.15.8/jar) + * [**qtjambi-serialport-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport/5.15.9/jar) + * [**qtjambi-serialport-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-windows-x64/5.15.9/jar) + * [**qtjambi-serialport-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-linux-x64/5.15.9/jar) + * [**qtjambi-serialport-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-macos/5.15.9/jar) + * [**qtjambi-serialport-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x86/5.15.9/jar) + * [**qtjambi-serialport-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-x64/5.15.9/jar) + * [**qtjambi-serialport-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm/5.15.9/jar) + * [**qtjambi-serialport-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-serialport-native-android-arm64/5.15.9/jar) * [QtSvg](https://doc.qt.io/qt-5/qtsvg-index.html) in module **qtjambi-svg**: - * [**qtjambi-svg-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/5.15.8/jar) - * [**qtjambi-svg-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/5.15.8/jar) - * [**qtjambi-svg-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/5.15.8/jar) - * [**qtjambi-svg-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/5.15.8/jar) - * [**qtjambi-svg-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/5.15.8/jar) - * [**qtjambi-svg-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/5.15.8/jar) - * [**qtjambi-svg-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/5.15.8/jar) - * [**qtjambi-svg-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/5.15.8/jar) + * [**qtjambi-svg-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg/5.15.9/jar) + * [**qtjambi-svg-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-windows-x64/5.15.9/jar) + * [**qtjambi-svg-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-linux-x64/5.15.9/jar) + * [**qtjambi-svg-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-macos/5.15.9/jar) + * [**qtjambi-svg-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x86/5.15.9/jar) + * [**qtjambi-svg-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-x64/5.15.9/jar) + * [**qtjambi-svg-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm/5.15.9/jar) + * [**qtjambi-svg-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-svg-native-android-arm64/5.15.9/jar) * [QtTextToSpeech](https://doc.qt.io/qt-5/qtspeech-index.html) in module **qtjambi-texttospeech**: - * [**qtjambi-texttospeech-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech/5.15.8/jar) - * [**qtjambi-texttospeech-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-windows-x64/5.15.8/jar) - * [**qtjambi-texttospeech-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-linux-x64/5.15.8/jar) - * [**qtjambi-texttospeech-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-macos/5.15.8/jar) - * [**qtjambi-texttospeech-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-x86/5.15.8/jar) - * [**qtjambi-texttospeech-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-x64/5.15.8/jar) - * [**qtjambi-texttospeech-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-arm/5.15.8/jar) - * [**qtjambi-texttospeech-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-arm64/5.15.8/jar) + * [**qtjambi-texttospeech-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech/5.15.9/jar) + * [**qtjambi-texttospeech-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-windows-x64/5.15.9/jar) + * [**qtjambi-texttospeech-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-linux-x64/5.15.9/jar) + * [**qtjambi-texttospeech-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-macos/5.15.9/jar) + * [**qtjambi-texttospeech-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-x86/5.15.9/jar) + * [**qtjambi-texttospeech-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-x64/5.15.9/jar) + * [**qtjambi-texttospeech-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-arm/5.15.9/jar) + * [**qtjambi-texttospeech-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-texttospeech-native-android-arm64/5.15.9/jar) * [QtUITools](https://doc.qt.io/qt-5/qtuitools-index.html) in module **qtjambi-uitools**: - * [**qtjambi-uitools-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/5.15.8/jar) - * [**qtjambi-uitools-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/5.15.8/jar) - * [**qtjambi-uitools-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/5.15.8/jar) - * [**qtjambi-uitools-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/5.15.8/jar) - * [**qtjambi-uitools-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/5.15.8/jar) - * [**qtjambi-uitools-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/5.15.8/jar) - * [**qtjambi-uitools-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/5.15.8/jar) - * [**qtjambi-uitools-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/5.15.8/jar) + * [**qtjambi-uitools-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools/5.15.9/jar) + * [**qtjambi-uitools-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-windows-x64/5.15.9/jar) + * [**qtjambi-uitools-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-linux-x64/5.15.9/jar) + * [**qtjambi-uitools-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-macos/5.15.9/jar) + * [**qtjambi-uitools-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x86/5.15.9/jar) + * [**qtjambi-uitools-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-x64/5.15.9/jar) + * [**qtjambi-uitools-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm/5.15.9/jar) + * [**qtjambi-uitools-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uitools-native-android-arm64/5.15.9/jar) * [QtWebChannel](https://doc.qt.io/qt-5/qtwebchannel-index.html) in module **qtjambi-webchannel**: - * [**qtjambi-webchannel-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/5.15.8/jar) - * [**qtjambi-webchannel-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/5.15.8/jar) - * [**qtjambi-webchannel-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/5.15.8/jar) - * [**qtjambi-webchannel-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/5.15.8/jar) - * [**qtjambi-webchannel-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/5.15.8/jar) - * [**qtjambi-webchannel-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/5.15.8/jar) - * [**qtjambi-webchannel-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/5.15.8/jar) - * [**qtjambi-webchannel-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/5.15.8/jar) + * [**qtjambi-webchannel-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel/5.15.9/jar) + * [**qtjambi-webchannel-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-windows-x64/5.15.9/jar) + * [**qtjambi-webchannel-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-linux-x64/5.15.9/jar) + * [**qtjambi-webchannel-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-macos/5.15.9/jar) + * [**qtjambi-webchannel-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x86/5.15.9/jar) + * [**qtjambi-webchannel-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-x64/5.15.9/jar) + * [**qtjambi-webchannel-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm/5.15.9/jar) + * [**qtjambi-webchannel-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webchannel-native-android-arm64/5.15.9/jar) * [QtWebEngineCore](https://doc.qt.io/qt-5/qtwebengine-index.html) in module **qtjambi-webenginecore**: - * [**qtjambi-webenginecore-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/5.15.8/jar) - * [**qtjambi-webenginecore-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/5.15.8/jar) - * [**qtjambi-webenginecore-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/5.15.8/jar) - * [**qtjambi-webenginecore-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/5.15.8/jar) + * [**qtjambi-webenginecore-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore/5.15.9/jar) + * [**qtjambi-webenginecore-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-windows-x64/5.15.9/jar) + * [**qtjambi-webenginecore-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-linux-x64/5.15.9/jar) + * [**qtjambi-webenginecore-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginecore-native-macos/5.15.9/jar) * [QtWebEngineWidgets](https://doc.qt.io/qt-5/qtwebengine-index.html) in module **qtjambi-webenginewidgets**: - * [**qtjambi-webenginewidgets-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/5.15.8/jar) - * [**qtjambi-webenginewidgets-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/5.15.8/jar) - * [**qtjambi-webenginewidgets-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/5.15.8/jar) - * [**qtjambi-webenginewidgets-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/5.15.8/jar) + * [**qtjambi-webenginewidgets-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets/5.15.9/jar) + * [**qtjambi-webenginewidgets-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-windows-x64/5.15.9/jar) + * [**qtjambi-webenginewidgets-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-linux-x64/5.15.9/jar) + * [**qtjambi-webenginewidgets-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webenginewidgets-native-macos/5.15.9/jar) * [QtWebEngine](https://doc.qt.io/qt-5/qtwebengine-index.html) in module **qtjambi-webengine**: - * [**qtjambi-webengine-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine/5.15.8/jar) - * [**qtjambi-webengine-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-windows-x64/5.15.8/jar) - * [**qtjambi-webengine-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-linux-x64/5.15.8/jar) - * [**qtjambi-webengine-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-macos/5.15.8/jar) + * [**qtjambi-webengine-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine/5.15.9/jar) + * [**qtjambi-webengine-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-windows-x64/5.15.9/jar) + * [**qtjambi-webengine-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-linux-x64/5.15.9/jar) + * [**qtjambi-webengine-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webengine-native-macos/5.15.9/jar) * [QtWebSockets](https://doc.qt.io/qt-5/qtwebsockets-index.html) in module **qtjambi-websockets**: - * [**qtjambi-websockets-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/5.15.8/jar) - * [**qtjambi-websockets-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/5.15.8/jar) - * [**qtjambi-websockets-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/5.15.8/jar) - * [**qtjambi-websockets-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/5.15.8/jar) - * [**qtjambi-websockets-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/5.15.8/jar) - * [**qtjambi-websockets-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/5.15.8/jar) - * [**qtjambi-websockets-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/5.15.8/jar) - * [**qtjambi-websockets-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/5.15.8/jar) + * [**qtjambi-websockets-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets/5.15.9/jar) + * [**qtjambi-websockets-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-windows-x64/5.15.9/jar) + * [**qtjambi-websockets-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-linux-x64/5.15.9/jar) + * [**qtjambi-websockets-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-macos/5.15.9/jar) + * [**qtjambi-websockets-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x86/5.15.9/jar) + * [**qtjambi-websockets-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-x64/5.15.9/jar) + * [**qtjambi-websockets-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm/5.15.9/jar) + * [**qtjambi-websockets-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-websockets-native-android-arm64/5.15.9/jar) * [QtWebView](https://doc.qt.io/qt-5/qtwebview-index.html) in module **qtjambi-webview**: - * [**qtjambi-webview-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/5.15.8/jar) - * [**qtjambi-webview-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/5.15.8/jar) - * [**qtjambi-webview-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/5.15.8/jar) - * [**qtjambi-webview-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/5.15.8/jar) - * [**qtjambi-webview-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/5.15.8/jar) - * [**qtjambi-webview-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/5.15.8/jar) - * [**qtjambi-webview-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/5.15.8/jar) - * [**qtjambi-webview-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/5.15.8/jar) + * [**qtjambi-webview-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview/5.15.9/jar) + * [**qtjambi-webview-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-windows-x64/5.15.9/jar) + * [**qtjambi-webview-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-linux-x64/5.15.9/jar) + * [**qtjambi-webview-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-macos/5.15.9/jar) + * [**qtjambi-webview-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x86/5.15.9/jar) + * [**qtjambi-webview-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-x64/5.15.9/jar) + * [**qtjambi-webview-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm/5.15.9/jar) + * [**qtjambi-webview-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-webview-native-android-arm64/5.15.9/jar) * [QtXml](https://doc.qt.io/qt-5/qtxml-index.html) in module **qtjambi-xml**: - * [**qtjambi-xml-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/5.15.8/jar) - * [**qtjambi-xml-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/5.15.8/jar) - * [**qtjambi-xml-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/5.15.8/jar) - * [**qtjambi-xml-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/5.15.8/jar) - * [**qtjambi-xml-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/5.15.8/jar) - * [**qtjambi-xml-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/5.15.8/jar) - * [**qtjambi-xml-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/5.15.8/jar) - * [**qtjambi-xml-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/5.15.8/jar) + * [**qtjambi-xml-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml/5.15.9/jar) + * [**qtjambi-xml-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-windows-x64/5.15.9/jar) + * [**qtjambi-xml-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-linux-x64/5.15.9/jar) + * [**qtjambi-xml-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-macos/5.15.9/jar) + * [**qtjambi-xml-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x86/5.15.9/jar) + * [**qtjambi-xml-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-x64/5.15.9/jar) + * [**qtjambi-xml-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm/5.15.9/jar) + * [**qtjambi-xml-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xml-native-android-arm64/5.15.9/jar) * [QtXmlPatterns](https://doc.qt.io/qt-5/qtxmlpatterns-index.html) in module **qtjambi-xmlpatterns**: - * [**qtjambi-xmlpatterns-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-windows-x64/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-linux-x64/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-macos/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-x86/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-x64/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-arm/5.15.8/jar) - * [**qtjambi-xmlpatterns-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-arm64/5.15.8/jar) + * [**qtjambi-xmlpatterns-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-windows-x64/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-linux-x64/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-macos/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-x86/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-x64/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-arm/5.15.9/jar) + * [**qtjambi-xmlpatterns-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-xmlpatterns-native-android-arm64/5.15.9/jar) * [QtCharts](https://doc.qt.io/qt-5/qtcharts-index.html) in module **qtjambi-charts**: - * [**qtjambi-charts-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/5.15.8/jar) - * [**qtjambi-charts-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/5.15.8/jar) - * [**qtjambi-charts-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/5.15.8/jar) - * [**qtjambi-charts-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/5.15.8/jar) - * [**qtjambi-charts-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/5.15.8/jar) - * [**qtjambi-charts-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/5.15.8/jar) - * [**qtjambi-charts-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/5.15.8/jar) - * [**qtjambi-charts-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/5.15.8/jar) + * [**qtjambi-charts-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts/5.15.9/jar) + * [**qtjambi-charts-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-windows-x64/5.15.9/jar) + * [**qtjambi-charts-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-linux-x64/5.15.9/jar) + * [**qtjambi-charts-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-macos/5.15.9/jar) + * [**qtjambi-charts-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x86/5.15.9/jar) + * [**qtjambi-charts-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-x64/5.15.9/jar) + * [**qtjambi-charts-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm/5.15.9/jar) + * [**qtjambi-charts-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-charts-native-android-arm64/5.15.9/jar) * [QtDataVisualization](https://doc.qt.io/qt-5/qtdatavisualization-index.html) in module **qtjambi-datavisualization**: - * [**qtjambi-datavisualization-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/5.15.8/jar) - * [**qtjambi-datavisualization-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/5.15.8/jar) - * [**qtjambi-datavisualization-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/5.15.8/jar) - * [**qtjambi-datavisualization-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/5.15.8/jar) - * [**qtjambi-datavisualization-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/5.15.8/jar) - * [**qtjambi-datavisualization-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/5.15.8/jar) - * [**qtjambi-datavisualization-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/5.15.8/jar) - * [**qtjambi-datavisualization-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/5.15.8/jar) + * [**qtjambi-datavisualization-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization/5.15.9/jar) + * [**qtjambi-datavisualization-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-windows-x64/5.15.9/jar) + * [**qtjambi-datavisualization-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-linux-x64/5.15.9/jar) + * [**qtjambi-datavisualization-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-macos/5.15.9/jar) + * [**qtjambi-datavisualization-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x86/5.15.9/jar) + * [**qtjambi-datavisualization-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-x64/5.15.9/jar) + * [**qtjambi-datavisualization-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm/5.15.9/jar) + * [**qtjambi-datavisualization-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-datavisualization-native-android-arm64/5.15.9/jar) * [QtNetworkAuth](https://doc.qt.io/qt-5/qtnetworkauth-index.html) in module **qtjambi-networkauth**: - * [**qtjambi-networkauth-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/5.15.8/jar) - * [**qtjambi-networkauth-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/5.15.8/jar) - * [**qtjambi-networkauth-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/5.15.8/jar) - * [**qtjambi-networkauth-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/5.15.8/jar) - * [**qtjambi-networkauth-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/5.15.8/jar) - * [**qtjambi-networkauth-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/5.15.8/jar) - * [**qtjambi-networkauth-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/5.15.8/jar) - * [**qtjambi-networkauth-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/5.15.8/jar) + * [**qtjambi-networkauth-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth/5.15.9/jar) + * [**qtjambi-networkauth-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-windows-x64/5.15.9/jar) + * [**qtjambi-networkauth-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-linux-x64/5.15.9/jar) + * [**qtjambi-networkauth-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-macos/5.15.9/jar) + * [**qtjambi-networkauth-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x86/5.15.9/jar) + * [**qtjambi-networkauth-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-x64/5.15.9/jar) + * [**qtjambi-networkauth-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm/5.15.9/jar) + * [**qtjambi-networkauth-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-networkauth-native-android-arm64/5.15.9/jar) * [QtVirtualKeyboard](https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html) in module **qtjambi-virtualkeyboard**: - * [**qtjambi-virtualkeyboard-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/5.15.8/jar) - * [**qtjambi-virtualkeyboard-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/5.15.8/jar) + * [**qtjambi-virtualkeyboard-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-windows-x64/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-linux-x64/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-macos/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x86/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-x64/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm/5.15.9/jar) + * [**qtjambi-virtualkeyboard-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-virtualkeyboard-native-android-arm64/5.15.9/jar) * [QtQuick3D](https://doc.qt.io/qt-5/qtquick3d-index.html) in module **qtjambi-quick3d**: - * [**qtjambi-quick3d-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/5.15.8/jar) - * [**qtjambi-quick3d-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/5.15.8/jar) - * [**qtjambi-quick3d-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/5.15.8/jar) - * [**qtjambi-quick3d-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/5.15.8/jar) - * [**qtjambi-quick3d-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/5.15.8/jar) - * [**qtjambi-quick3d-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/5.15.8/jar) - * [**qtjambi-quick3d-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/5.15.8/jar) - * [**qtjambi-quick3d-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/5.15.8/jar) + * [**qtjambi-quick3d-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d/5.15.9/jar) + * [**qtjambi-quick3d-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-windows-x64/5.15.9/jar) + * [**qtjambi-quick3d-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-linux-x64/5.15.9/jar) + * [**qtjambi-quick3d-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-macos/5.15.9/jar) + * [**qtjambi-quick3d-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x86/5.15.9/jar) + * [**qtjambi-quick3d-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-x64/5.15.9/jar) + * [**qtjambi-quick3d-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm/5.15.9/jar) + * [**qtjambi-quick3d-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-quick3d-native-android-arm64/5.15.9/jar) * [QtDesigner](https://doc.qt.io/qt-5/qtdesigner-manual.html) in module **qtjambi-designer**: - * [**qtjambi-designer-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/5.15.8/jar) - * [**qtjambi-designer-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/5.15.8/jar) - * [**qtjambi-designer-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/5.15.8/jar) - * [**qtjambi-designer-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/5.15.8/jar) - * [**qtjambi-designer-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/5.15.8/jar) - * [**qtjambi-designer-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/5.15.8/jar) - * [**qtjambi-designer-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/5.15.8/jar) - * [**qtjambi-designer-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/5.15.8/jar) + * [**qtjambi-designer-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer/5.15.9/jar) + * [**qtjambi-designer-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-windows-x64/5.15.9/jar) + * [**qtjambi-designer-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-linux-x64/5.15.9/jar) + * [**qtjambi-designer-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-macos/5.15.9/jar) + * [**qtjambi-designer-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x86/5.15.9/jar) + * [**qtjambi-designer-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-x64/5.15.9/jar) + * [**qtjambi-designer-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm/5.15.9/jar) + * [**qtjambi-designer-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-designer-native-android-arm64/5.15.9/jar) ### Qt5 Platform-dependent Add-Ons * [Active Qt (Windows only)](https://doc.qt.io/qt-5/activeqt-manual.html) in module **qtjambi-activex**: - * [**qtjambi-activex-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/5.15.8/jar) - * [**qtjambi-activex-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/5.15.8/jar) + * [**qtjambi-activex-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex/5.15.9/jar) + * [**qtjambi-activex-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-activex-native-windows-x64/5.15.9/jar) * [QtWinExtras (Windows only)](https://doc.qt.io/qt-5/qtwinextras-index.html) in module **qtjambi-winextras**: - * [**qtjambi-winextras-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-winextras/5.15.8/jar) - * [**qtjambi-winextras-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-winextras-native-windows-x64/5.15.8/jar) + * [**qtjambi-winextras-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-winextras/5.15.9/jar) + * [**qtjambi-winextras-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-winextras-native-windows-x64/5.15.9/jar) * [QtMacExtras (macOS only)](https://doc.qt.io/qt-5/qtmacextras-index.html) in module **qtjambi-macextras**: - * [**qtjambi-macextras-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-macextras/5.15.8/jar) - * [**qtjambi-macextras-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-macextras-native-macos/5.15.8/jar) + * [**qtjambi-macextras-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-macextras/5.15.9/jar) + * [**qtjambi-macextras-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-macextras-native-macos/5.15.9/jar) * [QtX11Extras (Linux only)](https://doc.qt.io/qt-5/qtx11extras-index.html) in module **qtjambi-x11extras**: - * [**qtjambi-x11extras-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-x11extras/5.15.8/jar) - * [**qtjambi-x11extras-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-x11extras-native-linux-x64/5.15.8/jar) + * [**qtjambi-x11extras-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-x11extras/5.15.9/jar) + * [**qtjambi-x11extras-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-x11extras-native-linux-x64/5.15.9/jar) ### Qt3D * [Qt3DCore](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dcore**: - * [**qtjambi-qt3dcore-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/5.15.8/jar) - * [**qtjambi-qt3dcore-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dcore-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dcore-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/5.15.8/jar) - * [**qtjambi-qt3dcore-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dcore-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dcore-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dcore-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dcore-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore/5.15.9/jar) + * [**qtjambi-qt3dcore-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dcore-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dcore-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-macos/5.15.9/jar) + * [**qtjambi-qt3dcore-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dcore-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dcore-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dcore-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dcore-native-android-arm64/5.15.9/jar) * [Qt3DRender](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3drender**: - * [**qtjambi-qt3drender-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/5.15.8/jar) - * [**qtjambi-qt3drender-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3drender-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3drender-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/5.15.8/jar) - * [**qtjambi-qt3drender-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3drender-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3drender-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3drender-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3drender-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender/5.15.9/jar) + * [**qtjambi-qt3drender-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3drender-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3drender-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-macos/5.15.9/jar) + * [**qtjambi-qt3drender-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3drender-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3drender-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3drender-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3drender-native-android-arm64/5.15.9/jar) * [Qt3DAnimation](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3danimation**: - * [**qtjambi-qt3danimation-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/5.15.8/jar) - * [**qtjambi-qt3danimation-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3danimation-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3danimation-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/5.15.8/jar) - * [**qtjambi-qt3danimation-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3danimation-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3danimation-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3danimation-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3danimation-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation/5.15.9/jar) + * [**qtjambi-qt3danimation-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3danimation-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3danimation-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-macos/5.15.9/jar) + * [**qtjambi-qt3danimation-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3danimation-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3danimation-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3danimation-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3danimation-native-android-arm64/5.15.9/jar) * [Qt3DExtras](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dextras**: - * [**qtjambi-qt3dextras-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/5.15.8/jar) - * [**qtjambi-qt3dextras-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dextras-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dextras-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/5.15.8/jar) - * [**qtjambi-qt3dextras-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dextras-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dextras-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dextras-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dextras-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras/5.15.9/jar) + * [**qtjambi-qt3dextras-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dextras-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dextras-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-macos/5.15.9/jar) + * [**qtjambi-qt3dextras-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dextras-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dextras-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dextras-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dextras-native-android-arm64/5.15.9/jar) * [Qt3DInput](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dinput**: - * [**qtjambi-qt3dinput-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/5.15.8/jar) - * [**qtjambi-qt3dinput-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dinput-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dinput-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/5.15.8/jar) - * [**qtjambi-qt3dinput-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dinput-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dinput-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dinput-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dinput-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput/5.15.9/jar) + * [**qtjambi-qt3dinput-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dinput-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dinput-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-macos/5.15.9/jar) + * [**qtjambi-qt3dinput-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dinput-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dinput-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dinput-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dinput-native-android-arm64/5.15.9/jar) * [Qt3DLogic](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dlogic**: - * [**qtjambi-qt3dlogic-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dlogic-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dlogic-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-macos/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dlogic-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dlogic-native-android-arm64/5.15.9/jar) * [Qt3DQuick](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dquick**: - * [**qtjambi-qt3dquick-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/5.15.8/jar) - * [**qtjambi-qt3dquick-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dquick-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dquick-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/5.15.8/jar) - * [**qtjambi-qt3dquick-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dquick-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dquick-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dquick-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dquick-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick/5.15.9/jar) + * [**qtjambi-qt3dquick-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dquick-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dquick-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-macos/5.15.9/jar) + * [**qtjambi-qt3dquick-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dquick-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dquick-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dquick-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquick-native-android-arm64/5.15.9/jar) * [Qt3DQuickExtras](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dquickextras**: - * [**qtjambi-qt3dquickextras-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dquickextras-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dquickextras-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-macos/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dquickextras-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickextras-native-android-arm64/5.15.9/jar) * [Qt3DQuickScene3D](https://doc.qt.io/qt-5/qt3d-index.html) in module **qtjambi-qt3dquickscene2d**: - * [**qtjambi-qt3dquickscene2d-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/5.15.8/jar) - * [**qtjambi-qt3dquickscene2d-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/5.15.8/jar) + * [**qtjambi-qt3dquickscene2d-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-windows-x64/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-linux-x64/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-macos/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x86/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-x64/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm/5.15.9/jar) + * [**qtjambi-qt3dquickscene2d-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-qt3dquickscene2d-native-android-arm64/5.15.9/jar) ### QtJambi Plugins * JDBC Sql Plugin: - * [**qtjambi-plugin-qsqljdbc-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/5.15.8/jar) - * [**qtjambi-plugin-qsqljdbc-native-android-common-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/5.15.8/jar) + * [**qtjambi-plugin-qsqljdbc-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-windows-x64/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-linux-x64/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-macos/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x86/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-x64/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-arm64/5.15.9/jar) + * [**qtjambi-plugin-qsqljdbc-native-android-common-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-plugin-qsqljdbc-native-android-common/5.15.9/jar) ### QtJambi Tools * [QtJambi User Interface Compiler (UIC)](https://doc.qt.io/qt-5/designer-using-a-ui-file.html#compile-time-form-processing): - * [**qtjambi-uic-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/5.15.8/jar) - * [**qtjambi-uic-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/5.15.8/jar) - * [**qtjambi-uic-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/5.15.8/jar) - * [**qtjambi-uic-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/5.15.8/jar) - * [**qtjambi-uic-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/5.15.8/jar) - * [**qtjambi-uic-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/5.15.8/jar) - * [**qtjambi-uic-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/5.15.8/jar) - * [**qtjambi-uic-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/5.15.8/jar) + * [**qtjambi-uic-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic/5.15.9/jar) + * [**qtjambi-uic-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-windows-x64/5.15.9/jar) + * [**qtjambi-uic-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-linux-x64/5.15.9/jar) + * [**qtjambi-uic-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-macos/5.15.9/jar) + * [**qtjambi-uic-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x86/5.15.9/jar) + * [**qtjambi-uic-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-x64/5.15.9/jar) + * [**qtjambi-uic-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm/5.15.9/jar) + * [**qtjambi-uic-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-uic-native-android-arm64/5.15.9/jar) * QtJambi Deployer: - * [**qtjambi-deployer-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/5.15.8/jar) - * [**qtjambi-deployer-native-windows-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/5.15.8/jar) - * [**qtjambi-deployer-native-linux-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/5.15.8/jar) - * [**qtjambi-deployer-native-macos-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/5.15.8/jar) - * [**qtjambi-deployer-native-android-x86-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/5.15.8/jar) - * [**qtjambi-deployer-native-android-x64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/5.15.8/jar) - * [**qtjambi-deployer-native-android-arm-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/5.15.8/jar) - * [**qtjambi-deployer-native-android-arm64-5.15.8.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/5.15.8/jar) + * [**qtjambi-deployer-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer/5.15.9/jar) + * [**qtjambi-deployer-native-windows-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-windows-x64/5.15.9/jar) + * [**qtjambi-deployer-native-linux-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-linux-x64/5.15.9/jar) + * [**qtjambi-deployer-native-macos-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-macos/5.15.9/jar) + * [**qtjambi-deployer-native-android-x86-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x86/5.15.9/jar) + * [**qtjambi-deployer-native-android-x64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-x64/5.15.9/jar) + * [**qtjambi-deployer-native-android-arm-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm/5.15.9/jar) + * [**qtjambi-deployer-native-android-arm64-5.15.9.jar**](https://search.maven.org/artifact/io.qtjambi/qtjambi-deployer-native-android-arm64/5.15.9/jar) diff --git a/www/Whats-New.md b/www/Whats-New.md index 282abf38..de6dbb71 100644 --- a/www/Whats-New.md +++ b/www/Whats-New.md @@ -1,20 +1,21 @@ -# What's new in QtJambi 6.3.3 / 6.2.6 / 5.15.8 +# What's new in QtJambi 6.3.4 / 6.2.7 / 5.15.9 ## Bugfixes Solved issues: -* [Issue 69](../../../issues/69): Signal connection does not work as expected with generics -* [Issue 66](../../../issues/66): raiseQThreadAffinityException cores java instead of throwing an exception (blindfixed) -* [Issue 64](../../../issues/64): QtJambi build failed -* [Issue 63](../../../issues/63): Program cannot be started -* [Issue 62](../../../issues/62): symbol lookup error -* [Issue 60](../../../issues/60): Deployment Icon not working in windows (feature removed) +* [Issue 73](../../../issues/73): Add support for QQuickWebEngineView +* [Issue 72](../../../issues/72): Web page runJavascript always crashes jvm when you try to use the returned object +* [Issue 71](../../../issues/71): Java DeferredDelete throws thread affinity exception, one of threads is undefined +* Solved bug in converting QVariantMap ## New Features -* Class `io.qt.core.QString` now makes all data conversion and formatting features available in Java. +* Added QQmlEngine template method: `singletonInstance` +* Added QJSEngine template methods: `fromScriptValue`, `toScriptValue`, `fromManagedValue`, `toManagedValue` +* Added functions to QtQml: `qmlTypeId`, `qjsEngine` +* Added functions to QtWebEngineQuick: `toWebEngineSettings`, `toWebEngineScriptCollection` * Qt 6.4 ready. ## Compatibility -QtJambi 6.3.3, 6.2.6 and 5.15.8 are source- and binary-compatible to its predecessor releases. +QtJambi 6.3.4, 6.2.7 and 5.15.9 are source- and binary-compatible to its predecessor releases.