amirb 1 ارسال شده در شهریور 98 سلام.خسته نباشید. من می خوام از کتابخانه ی nakama در qml استفاده کنم.این کتابخانه به زبان cpp است.برای توابعش می تونم سیگنال و اسلات بنویسم و در qml فراخوانی کنم. ولی data type های سفارشی اون رو نمی دونم چطور در qml ایجاد کنم.مثلا در کد زیر (cpp): NClientParameters parameters; parameters.serverKey = "defaultkey"; parameters.host = "127.0.0.1"; parameters.port = DEFAULT_PORT; NClientPtr client = createDefaultClient(parameters); می خوام NClientParameters در qml قابل دسترسی باشه و بتونم هاست و پورت رو داخل qml تنظیم کنم(مثل بالا). بعد هم به عنوان پارامتر برای تابعم استفاده کنم. لینک کتابخانه cpp: https://heroiclabs.com/docs/cpp-client-guide/#usage نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
0 قاسم رمضانی منش 63 ارسال شده در شهریور 98 (ویرایش شده) درود بر شما، سلامت باشید؛ برای اینکار بهتر هست که یک کلاس به عنوان Adapter درست کنید که درواقع ارتباطات شما را با این کلاس پوشش بدهد و آن کلاس را در سمت QML استفاده کنید. برای استفاده از دادههای خودمان در سمت QML راههای مختلفی هست که باید مطالعه کنید و بسته به نیازتون انتخاب کنید؛ سند روشهای برقراری ارتباط بین ++C و QML. یک مثال در این قسمت آقای اسدزاده زدهاند و برای نمونهٔ اضافه بنده هم یک مثال از این روش، به اینصورتکه یک کلاس برای ارتباط برقرار کردن با کلاس QVector درست کردهام : [پیوند فایل somewrapper.h] class SomeWrapper : public QObject { Q_OBJECT Q_PROPERTY(QString StringWrap READ readCurrentString WRITE addAnotherString) public: void addAnotherString(const QString& string) { REPORT(string, "ourStringList"); REPORT(string, "currentString"); this->currentString = string; this->ourStringList.push_back(string); } QString readCurrentString(void) const { return this->currentString; } Q_INVOKABLE QString getSomeString(const int& index) const { return this->ourStringList.at(index); } private: QVector<QString> ourStringList; QString currentString; }; و به اینصورت آن را برای موتور QML معرفی کردهام : [پیوند فایل main.cpp] int main (int argc, char** argv) { QGuiApplication application(argc, argv); QQmlApplicationEngine qmlApplication; SomeWrapper stringBook; qmlApplication.rootContext()->setContextProperty ("StringBook", &stringBook); qmlApplication.load(QUrl::fromLocalFile("../../main.qml")); return application.exec(); } و حال به راحتی میتوانم دادههای مورد نیاز را به سادگی از سمت QML دریافت کرده و با پردازش آن در کلاس SomeWrapper به کلاس QVector ارسال کنم : [پیوند فایل main.qml] TextField{ id: user_search_input placeholderText: "خانهٔ مورد نظر را وارد کنید" horizontalAlignment: TextInput.Center } Button{ text: "گَشتن" onClicked: { user_search_input.text = StringBook.getSomeString(user_search_input.text) } } ویرایش شده در مهر 98 توسط قاسم رمضانی منش اضافه کردنم مثال بیشتر. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
0 amirb 1 ارسال شده در مهر 98 فکر کنم باید داده هایی رو که می خوام تبادل کنم به نوع Qvariant در C++ و variant در qml در بیارم تا مشکلی پیش نیاد. این طور که فهمیدم این دو نوع یه جورایی dynamic هست و میشه داده های مختلفی رو داخلش ذخیره کرد. نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
سلام.خسته نباشید.
من می خوام از کتابخانه ی nakama در qml استفاده کنم.این کتابخانه به زبان cpp است.برای توابعش می تونم سیگنال و اسلات بنویسم و در qml فراخوانی کنم.
ولی data type های سفارشی اون رو نمی دونم چطور در qml ایجاد کنم.مثلا در کد زیر (cpp):
می خوام NClientParameters در qml قابل دسترسی باشه و بتونم هاست و پورت رو داخل qml تنظیم کنم(مثل بالا). بعد هم به عنوان پارامتر برای تابعم استفاده کنم.
لینک کتابخانه cpp:
https://heroiclabs.com/docs/cpp-client-guide/#usage
به اشتراک گذاری این ارسال
لینک به ارسال
به اشتراک گذاری در سایت های دیگر