Aktywne Wpisy
Malenaa +101
Rzuciła mnie przez SMS xD szybko poszło
#zwiazki #p0lka #logikarozowychpaskow #logikaniebieskichpaskow
#zwiazki #p0lka #logikarozowychpaskow #logikaniebieskichpaskow
Megasuper +52
Zasnąłem na paczce merci i gdy otworzyłem oczy zastałem ten widok. Jak przywrócić touchpad do „kliku" sprzed czekoladowej katastrofy? Jeździłem szpilką wokół i wydłubywałem ale problem pozostał
#cpp #qt #qt5 #qml #naukaprogramowania
Ustawiasz textRole na property która jest koniecznie QString(albo coś co zmienia się do jsowego stringa):
ComboBox {
"myProperty"
model:myArray
}
Generalnie na viewModel trzeba uważać bo każdy rodzaj obiektu działa inaczej. Najbardziej odpowiednie i najtrudniej jest zrobić własny model w C++ dziedzicząc po QAbstractListModel. Generalnie jak przekażesz tablicę to większość obiektów jako model przyjmie to w pewien wrapper który wystawia tylko jedną zmienną
modelData
do któregoQ_PROPERTY(QString myProperty READ myProperty WRITE setMyProperty NOTIFY myPropertyChanged)
Chyba że ta wartość zawsze będzie stała (od powstawia obiektu) i deklarowanie sygnału NOTIFY jest bezensu wtedy deklarujesz tak:
Q_PROPERTY(QString myProperty READ myProperty CONSTANT )
Inaczej QML się burzy że nie ma sygnału NOTIFY.
Plik nagłówkowy do klasy Hotel: http://pastebin.com/awTLbcKW
Plik nagłówkowy do klasy viewModel, którą ustawiam jako datacontext: http://pastebin.com/hr0UyEPE
Jak widać, mam klasę hotel, a w klasie viewModel mam QList z obiektami klasy hotel. Chciałbym, zbindować tą listę z ComboBoxem.
ComboBox {
textRole:"name"
model: datacontext.hotels
}
Coś takiego?
Jak tworzysz tą ViewModel ? w main.cpp jako
engine.rootContext()->setContextProperty("datacontext",QVariant::fromValue(viewModel));
?Pamiętaj imporcie:
import QtQuick.Controls 2.0
Komentarz usunięty przez autora
@GaHee: a gdzie masz _hotels.append(h) ? ( ͡° ͜ʖ ͡°)
Ale i tak ten cały QML spoko działa.
https://doc.qt.io/qt-5/qtlabscalendar-index.html
rootContext()->setContextProperty
jest ok. Gdy ten singleton nie koniecznie musi być zainicjowane to lepiej użyć rejestracji typu jako Singletona.Jeżeli obiekt dostaje się do zewnętrznych danych ale dostęp ma pewien stan to lepiej mimo wszystko warto zarejestrować normalny typ i zainicjalizować w QML.
Jeżeli coś jest lokalnym stanem to zazwyczaj lepiej inicjalizować to w QML.
Aha typ tak czy
.ui.qml
które od Qt5.8 są traktowane jako widoki.