Greetings, Ulf, thank you for your prompt response.
Date: Thu, 10 Nov 2022 09:53:18 +0100
From: Ulf Hermann <ulf.herm...@qt.io>
To: interest@qt-project.org
Subject: Re: [Interest] Scripting within Qt6 and QJSEngine

Hi Filippo,

the equivalent to Q_OBJECT for value types is Q_GADGET. So, your data structure would look like this:

struct DataPoint
{
   Q_GADGET
   Q_PROPERTY(double x MEMBER x)
   Q_PROPERTY(double y MEMBER y)

public:
   double x;
   double y;
}


Good, thank you, I'll test that.

Now, depending on what you want to do with that in JS it may or may not work. I'd need some more details there.

Sure:

DataPoint is the basic (x,y) data holder for an application that displays curves
(mass spectra) with millions of these DataPoint_s. For example, Trace is a
std::vector<DataPoint>. It derives from QObject, precisely with the idea of
making it JScriptable. Trace objects are then plot in widgets to show the
"curve".

NB: In QML (as opposed to JS) you can register named value types these days. There is the QML_VALUE_TYPE macro. In QML value types can be constructible and/or structured, offering different ways to create them from JS expressions. Finally, in QML, value types can be stored in lists. You can have "property list<dataPoint>" if you use QML for your scripting.

That is an intesting question because it somehow pin points something that is
not clear to me. Perusing the documentation, I saw that QQmlEngine derives from
QJSengine. I cannot figure out which is best to employ in my use case:
scripting a QtWidgets C++ application. Can I use QML as a scripting language in
a currently C++-only program ?

Thanking you again,

Sincerely,
Filippo

--
⢀⣴⠾⠻⢶⣦⠀  Filippo Rusconi, PhD
⣾⠁⢠⠒⠀⣿⡁   Research scientist at CNRS
⢿⡄⠘⠷⠚⠋⠀   Debian Developer
⠈⠳⣄⠀⠀⠀⠀  http://msxpertsuite.org
          http://www.debian.org


_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to