Sono nuovo di Qt, e da quello che ho letto su qt-project.org e in altri luoghi; QtQuick sembra un'opzione interessante per la sua capacità di lavorare su dispositivi basati su puntatore e touch. Il mio problema è far sì che funzioni bene con C++.QtQuick, immagini dinamiche e C++
Ho deciso di scrivere una variante di Conway's Game of Life come passo successivo dopo "Hello World". Sono completamente disorientato su come ottenere la "scheda" - una [altezza] [larghezza] [byte-per-pixel] array di caratteri - integrata nel grafico della scena.
Fondamentalmente, il processo è che "LifeBoard" scorre le sue regole e aggiorna il char */image. Ho questo semplice QML:
:::QML
ApplicationWindow {
id: life_app_window
visible: true
title: qsTr("Life")
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("Quit")
onTriggered: Qt.quit();
}
}
}
toolBar: ToolBar {
id: lifeToolBar;
ToolButton {
id: toolButtonQuit
text: qsTr("Quit")
onClicked: Qt.quit()
}
ToolButton {
id: toolButtonStop
text: qsTr("Stop")
enabled: false
//onClicked:
}
ToolButton {
id: toolButtonStart
text: qsTr("Start")
enabled: true
//onClicked: //Start life.
}
ToolButton {
id: toolButtonReset
text: qsTr("Stop")
// onClicked: //Reset life.
}
}
Flow {
id: flow1
anchors.fill: parent
//*****
// WHAT GOES HERE
//*****
}
statusBar: StatusBar {
enabled: false
Text {
// Get me from number of iterations
text: qsTr("Iterations.")
}
}
}
voglio immagine provenire da una classe con un api po 'come questo:
class Life {
public:
QImage getImage() {}
// Or
char* getPixels(int h, int w, QImage::Format_ARGB8888) {}
}
non ho idea, e ora guado attraverso esercitazioni no Aiuto. Come si collega un'immagine char * in C++ a ??? in QML in modo che QML possa avviare/arrestare il ciclo "Life" e quindi il ciclo "Life" e aggiornare il char array e notificare a QML di ridisegnarlo?
Nota: Ho guardato sottoclassi QQuickImageProvider in base alla informazioni here. Il problema con questo approccio è che non riesco a vedere come lasciare C++ "guidare" l'immagine sullo schermo. Desidero passare il controllo da QML a C++ e lasciare che C++ dica a QML quando aggiornare il display con l'immagine modificata. C'è una soluzione con questo approccio? O un altro approccio interamente.
Difficile da dire senza vedere il C++. È possibile utilizzare QListModel o QAbstractItemModel per inviare un elenco di dati da C++ a QML ed essere in grado di aggiornarli da C++. Quindi in QML "solo" usi il componente Image {} in un GridView per rappresentare il tuo gioco di griglia simile. – koopajah
@koopajah Voglio che il codice di manipolazione delle immagini sia in una serie di funzioni private. Quello che voglio è avere QML del segnale C++ che l'immagine di aggiornamento sia pronta e che QML mostri quell'immagine. Inoltre QML dovrebbe essere in grado di chiamare gli slot "stop", "start" e "reset" per inizializzare/sospendere le iterazioni di vita. – justinzane