qml and import version : impact on performance? - qt

Does QML import version is necessary to achieve better performance?
What I want to ask is :
Does import QtQuick 2.9 can lead to better performance than import QtQuick 2.0 ?

No, it won't have any difference.
The only real difference between two different import versions of the same module is which new types and properties will be available to your code. Those new types and properties will still be registered with the engine, but just won't be available if the import version in your QML isn't high enough for the version with which they were registered in C++.

Related

How to change angle range of QML's Dial component?

I've been looking for a way how to change QML's Dial component's angle range. From documentation I know it's 140 degrees from "north" to both sides and the angle property is marked as read-only.
I currently have the default 280 degree range. Is there a way to change the range to for example 240 degrees?
I don't want to write the entire dial myself, the default actually works really well. The purpose of the change is purely aesthetical.
Thanks for any suggestions!
This is highly dependable on which QuickControls Style (Default, Universal, Fusion e.t.c.) you are using but in all cases, you will need to inject/modify part of the built-in components and create your hacked version of Dial
It is very good to know how the dial itself is written, simply finding Default styled Dial on GitHub over here This points us to some DialImpl component, using Woboq online qt sources, it can be traced here and because QQuickDefaultDial is private class, we can't do much with it, therefore you will have to reimplement DialImpl yourself and provide your background (and possibly also handle).
Finally your Dial version can be implemented in this manner
// MyDial.qml
import QtQuick 2.15
import QtQuick.Controls 2.15
Dial {
background: Item {
// Your background definition
}
}
Alternatively you can also directly implement your Dial template

Automated removal of unused QML imports

I'm working with a pretty large Qt/QML code base, and I am looking for way to detect and remove all unused QML imports. How can this be done? Is there some way to automate it?
I believe that removing unused QML imports is a good way to keep the codebase clean. Also, according the QML Coding Guidelines, it will improve loading performance:
Imports take time in QML. And If you are developing for a device with low system specifications, then you will want to optimize as much as possible. In that case, try to minimize the number of imports you use in your QML file.
You could parse every single QML file and search for QML dependencies in the code, then remove every other dependency copied by winqtqmldeploy.
After almost two years, I've found a conventional way to do it, provided by Qt via their tool qmlLint :
You may now disable warnings on a per category basis, for example by
default qmllint will inform you about unused imports:
import QtQuick
import QtQuick3D // Info: DEM.qml:2:1: Unused
import at DEM.qml:2:1
Text {
id: textElement
text: "Hello world!"
anchors.centerIn: parent
}
If you wish, you can now either suppress this information by passing
--unused-imports disable. Or you can turn this informational message into a full blown warning by using --unused-imports warning. In that
case, as with all warnings, the unused import warning will make
qmllint return an exit code of 1 ; that will cause failure in any CI
or pre-commit hooks that use the tool. See the output of qmllint
--help for the complete list of warning categories.
Source : https://www.qt.io/blog/whats-new-in-qml-tooling-in-qt-6.2

Package in java 's equivalent in codenameone

i have a java api that uses those packages:
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Base64;
i find the equivalence of:
the second(import javabc.SecureRandom;)
and
the third(import com.codename1.util.Base64;)
now i still searching for the equivalente of the first one(MessageDigest)
Thanks
MessageDigest just loads the explicit algorithm dynamically. This sounds good for decoupling of encryption but due to dynamic loading it blocks the optimizer from generating efficient code. If we'd support it we'd need to include all of the possible message digests.
The solution is to create an explicit digest instance such as SHA512Digest etc.

javax.swing.tree.RowMapper and org.springframework.jdbc.core.RowMapper

when should we use import for javax.swing.tree.RowMapper and import for
org.springframework.jdbc.core.RowMapper
? Please explain briefly
The different classes serve different purposes, their interface is not the same. JDBC package contains classes to work with databases, swing package contains classes to work with UI. So it depends what you are doing.

How to add multi language support to a python QT program

How would I go about adding multi language support to a program, that is written in python, with a QT frontend?
For instance when you ran it and your environments language was set to english it would open a window saying hello, but if your environment was set to spanish it would say hola.
I'm not really sure where to start, so if someone could point me in the right direction to some tutorials, or some documentation on how to do it, I would greatly appreciate it.
EDIT:
I should add, I'm using pyqt4
Edit:
Ok, I have generated all the translation .qm files, but how do I go about adding the python code to use them? There is even less information about this it looks like...
The answer I eventually came up with was using the code below.
from PyQt4 import QtCore, QtGui
from locale import getdefaultlocale
app = QtGui.QApplication(sys.argv)
locale = getdefaultlocale()
translator = QtCore.QTranslator(app)
translator.load('/usr/share/my_app/tr/qt_%s.qm' % locale[0])
app.installTranslator(translator)

Resources