Qml-spor og signaler

Jeg vil sende et signal fra C ++ til et spor i min QML-fil. Jeg har allerede fatt det til a fungere uten og primitive type parametere, selv om jeg vil sende en QString til QML-sporet min, far jeg en feil mens jeg kobler til.

Jeg kobler til i main.cpp.

den relavante delen av min qml-fil.

& Emsp; dette sporsmalet spurte 12 januar 12 klokken 11:14 alex 2.174 5 29 49 1 Du har ikke noe QString-argument i oppdateringsViewWithItem? (Som feilen peker pa) – Bart Jan 12 ’12 klokken 11:16 Beklager glemte a legge den til igjen etter testing. Fortsatt ikke jobber skjont. Jeg provde updateViewWithItem (QString) og updateViewWithItem (streng). – alex 12 jan 12 kl 11:17 1 signal fra C ++ betyr et c + + bibliotek eller en Qt klasse. – UmNyobe Jan 12 ’12 kl 14:54 bare en normal Qt klasse – alex 12 jan 12 kl 16:34 1 takk, denne Q / A virkelig hjulpet meg. for fremtidig referanse, et godt eksempel er na her: github.com/andrewrjones/qml2-to-cpp-and-back-signals – Mark Ch Sep 30 ’16 at 7:35 |

Jeg tror det ville v re best hvis du sjekker denne veiledningen:

spesielt denne delen:

Jeg tror din feil i dette tilfellet kan enten v re at du ikke erkl rte det som et spor eller du ikke gjorde det uskadelig. Begge alternativene er forklart i Qt-oppl ringen.

Du ma ogsa bruke en QVariant for a utveksle data mellom C ++ og QML. Du kan ogsa registrere typer, f.eks. Widgets og ting, slik at du kan bruke dem i QML som en «native» skriv som et rektangel. I de fleste tilfeller anbefales dette ikke, unntatt hvis du trenger noen ekstern klasse eller noen data som du ikke kan vise ellers i QML-grensesnittet.

Arsaken til QVariant er Script-basert tiln rming til QML. QVariant inneholder i utgangspunktet dine data og en description av datatypen, slik at QML vet hvordan du skal handtere det riktig. Derfor ma du spesifisere parameteren i QML med String, int osv. Men den opprinnelige datautvekslingen med C ++ forblir en QVariant.

iling og jeg mottar feilen: QObject :: connect: Ingen slikt signal QDeclarativeContext :: send () i ../qt_cpp/mainwindow.cpp:66 Her er en c + + kodebit: message_reading test; QDeclarativeView tempview; tempview.setSource (QUrl (& quot; QRC: / qml / meg.

Jeg har brukt qmlRegisterType for, men det er en sv rt ubeleilig losning for enkle datatyper. Den brukes heller til mer komplekse data, for eksempel tilpassede widgets, lerret eller videoelementer som QML ikke stotter eller utvider QStandardItemModels. Det er en mer praktisk mate a utveksle data mellom QML og C ++ og trenger ikke Signaler eller Slots i forste omgang, fordi QStandardItemModel oppdaterer GUI automatisk. For a bruke QStandardItemModel ma du registrere typen med qmlRegisterType … Modellen kan da brukes i modellbaserte visninger som ListView etc.

Jeg vedlagt en veiledning for dette emnet, og beskriver hvordan du bruker QListModel.

& Emsp; dette svaret ble redigert 24. apr’15 kl. 15:34 Ross Rogers 9,616 15 63 117 svaret Jan 12 ’12 kl 19:16 mmoment 996 11 24 Jeg bruker ikke en QDeclarativeView-underklasse her. Som jeg papekte i sporsmalet mitt, virker det alt hvis jeg bare slipper ut parameteren. Ma jeg pa noen mate introdusere QString til min QML? – alex 12 jan 12 kl 19:26 3 I sa fall prov a bruke en QVariant. Jeg hadde dette problemet et par ganger at QML ikke gjenkjenner andre datatyper enn QVariant. – mmoment 12 jan 12 kl 19:30 Hei, det loste problemet for meg! Lurer fortsatt pa om det er en bedre losning pa dette. Har du noen gang provd a bruke qmlRegisterType? – alex 12 jan 12 kl 19:38 Jeg har nettopp oppdatert mitt svar der oppe. Hvis det er tilstrekkelig, merk det som svar. – mmoment 12 jan 12 kl 19:56 1 reddet meg mye takk takk 🙂 – cerkiewny 17. mars kl 16:13 |

Du bor bruke Tilkoblinger i dette tilfellet (kanskje det er den eneste maten a koble til).

Sett objektet myObj til QML-filen ved « setContextProperty.


Hei! Vil du spille i det mest populære kasinoet? Vi forbereder det for deg. Prøv her nå!