خرید بک لینک

سلام
من از این کد برای فراخوانی تابع از C++ در main.cpp استفاده میکنم ولی خیلی درست و خوب کار میکنه.

int main(int argc, char *argv[]){
QApplication app(argc, argv);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QObject * object = engine.rootObjects().value(0);

QVariant retuedValue;
QVariant msg = "Hello from C++";
QMetaObject::invokeMethod(object, "myQmlFunction",
Q_RETURN_ARG(QVariant, retuedValue),
Q_ARG(QVariant, msg));

retu app.exec(); }

اما در سایر کلاس ها من چطور میتونم این دسترسی را داشته باشم؟ این کد در سایر کلاس ها ی C++ کار نمیکنه.
مثلا من یه کلاس برای ارتباط با پورت سریال ساختم
و میخوام مثلا در صورت دریافت داده خاص یه سری کنترل ها غیرفعال شه یا فعال شه یا دیالوگی همراه با پیام خاصی نمایش بدم ایکون کنترل ها تغییر کنه و ....

برای مثال:

void MySerialPort::readData(){
QByteArray data = serial->readAll();
if(data[0]=='0') // For example
Show qml dialog
if(data[1]=='1') // For example
disable GroupBox

...
... }

فعلا این کار رو با تعریف پراپرتی انجام دادم ولی تعداد پراپرتی ها خیلی خیلی زیاد شده
ایا روش بهتری وجود نداره؟

برچسب: نویسنده: محمد رضا جوادیان تاريخ: سه شنبه 25 اسفند 1394 ساعت: 12:50

صفحه بندی