# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش > سوال: اتصال qml به cpp در Qt

## vertionality

سلام

من یک text area دارم می خواهم اطلاعاتش را در یک string در فایل cpp ام ذخیره کنم .

چه جوری میشه فایل qml را با cpp مرتبط کرد ؟ 

ممنون

----------


## کامبیز اسدزاده

> سلام
> 
> من یک text area دارم می خواهم اطلاعاتش را در یک string در فایل cpp ام ذخیره کنم .
> 
> چه جوری میشه فایل qml را با cpp مرتبط کرد ؟ 
> 
> ممنون


برای ارتباط این دو باید کلاس و اشیاء سمت سی++ رو در کیو ام ال توسط *qmlRegisterType* رجیستر کنی، اینم *نمونه مثال*

----------


## vertionality

> برای ارتباط این دو باید کلاس و اشیاء سمت سی++ رو در کیو ام ال توسط *qmlRegisterType* رجیستر کنی، اینم *نمونه مثال*


من راستش گیج شدم ، رجیستر که کردیم چه اتفاقی می افته ،

یعنی ما وقتی رجیستر میکنیم بعدش میریم import میکنیم توی qml . چی توی qml ایمپورت میشه ؟

این ارتباط دو طرفه است ؟ یعنی هم cpp به qml هم qml به cpp ؟

خوب پس چرا از QQmlApplicationEngine استفاده می کنیم . ما که یکبار qml را فراخوانی کرده ایم .

چرا نباید متغیر های پراپرتی بصورت دیفالت در cpp قابل مشاهده باشند ؟

ممنون

----------


## vertionality

> برای ارتباط این دو باید کلاس و اشیاء سمت سی++ رو در کیو ام ال توسط *qmlRegisterType* رجیستر کنی، اینم نمونه مثال





الان ازه حل شد . فقط یک مشکلی که هست اگر بخواهم از qQmlProperty در main.cpp استفاده کنم برای خواندن اطلاعات 

ارور میده که : 



D:\Program\QT\5.11.1\mingw53_32\include\QtQml\qqml  property.h:131: error: a function-definition is not allowed here before '{' token
 {
 ^



بعد که به فایل خود کتابخانه مراجعه میکنم ارور را از این قسمت گرفته :

inlineuintqHash(constQQmlProperty&key)
{
 returnqHash(key.object())+qHash(key.name()); 
}





کد فایل main.cpp :



#include<QQmlProperty>


QQmlEngineengine; QQmlComponentcomponent(&engine,"qrc:/main.qml"); QObject*object=component._create_(); 
qDebug()<<"Propertyvalue:"<<QQmlProperty::read(object,"someNumber").toInt(); 



کد فایل main.qml :

 importQtQuick2.9

importQtQuick.Controls2.2 importQtQuick.Window2.3 
ApplicationWindow{ height:200 width:200 propertyintsomeNumber:100 }

 

دستتون درد نکنه ، کلا مطالب خیلی خوبی توی سایت هست . خیلی توی زمینه کمکم کرد . دستتون درد نکنه

----------


## vertionality

مشکل بالا حل شد بجای read property از invoke استفاده کردم .
اگر کسی هنوز نتونسته cpp را به qml لینک کنه میتونه از این سورس استفاده کنه .
دیگه رجیستری نمی خواهد یک تابع می سازید بعد هر بار که مثلا دکمه را فشار داد تابع اجرا می شود .
لینک
ممنون

----------

