Q_PROPERTY Question
-
Hello,
I have a class in which I would like my Q_PROPERTY READ function to accept an argument. Here is my code:
@
class Simple : public QObject {
Q_OBJECT
Q_PROPERTY(QObject* apples READ getApples)public:
QObject * getApples(int index);
};
@I always get a compiler error that says:
no matching function for call to 'Simple::getApples()'
QObject * Simple::getApples(int)
note: candidate expects 1 argument, 0 providedSo it seems that it is looking for a function without arguments. Is it possible to have a READ function take arguments?
Thank you
-
The property mechanism assumes that there is a single underlying private member for each property. In your case, you have a property, whose getter does not refer to a single member. Properties are deeply integrated inside Qt and it may very well be that the getter should expect no arguments.
You can still find a workaround for this - just go back to a no parameter getter and create an additional method, for example selectApples(int index) which sets the value of the QObject pointer to the desired one, before calling the getApples method.
-
Found this:
bq. The READ function is const and returns the property type. The WRITE function returns void and has exactly one parameter of the property type. The meta-object compiler enforces these requirements.
Although the WRITE function does seem to work OK with return other than void...