Oldukça ayrıntılı bir hesaplamanın çıktısını görüntüleyen basit bir GUI örneğini düşünün.QML veya tam tersi
Şimdi QML kullanarak güzel ve özel bir GUI yazmak istiyorum.
Ayrıca arka plan uygulamamı QT C++'a yazmak istiyorum.
Ben QT belgelerine önünde otururken ve merak ediyorum eğer
1) QML ve bir şekilde kesinlikle mümkün olduğu (o benim C++ sınıfları gömmek uygulamayı) ya da eğer yazmalısınız ben
2) zaten GUI için QT Widget'lar kullanarak C++ şeyi yazdım
) yine mümkün olduğu (a C++ uygulama yazmak ve her nasılsa o QML GUI gömmek ve benim sınıfları den QML özelliklerini değiştirmek gerekir. GUI arayüzünü yeniden yazmaya istekli olmama rağmen GUI'yi QML'ye taşımak ve C++ sınıflarını tutmak istiyorum.
mümkün anser:
belirgin çözelti aşağıdaki C++ sınıfları tutulması önerilmektedir ve sinyalleri ve yuvaları sayesinde özel GUI arabirimi.
QQuickView viewer;
viewer.setSource(QUrl("./qml/main.qml"));
viewer.show();
sonra Sınıfım eklendi ve bana bağlantılarını yapmak üzere bir nesne var:
MyClass myClass;
QQuickItem* item = viewer.rootObject();
QObject::connect(item, SIGNAL(buttonClicked()), &myClass, SLOT(mySlot()));
QObject::connect(&myClass, SIGNAL(mySignal(QVariant)), item, SLOT(updateGUI(QVariant)));
Böylece temelde benim ana işçi sınıfını başlatır ve bunun gibi QML GUI görüntüleyen bir main.cpp ile sona erdi
C++ sınıflarında yuvaları ve sinyalleri uygularken, verileri aktarmak için QVariant nesnelerini kullanmalısınız. QML dosyası daha sonra SIGNALS'i uygular örn. Görüntülenecek verileri almak için tıklanan düğmeler ve SLOTS için.
Bu tam olarak ne için umuyordum. GUI olmayan kodumdaki tek değişiklik, SIGNALS ve SLOTS aracılığıyla tüm etkileşimleri yapmaktı. Artık uygulama için hem GUI'leri (QML/Widgets) kullanabilirim.
Kapsamlı bir yanıt ekledim. Bunun neden değerli bir çözümle iyi bir soru olduğunu açıkladım. – HWende
Related: [GUI için Qt Designer C++ veya QML] (http://stackoverflow.com/q/4610073/514235) – iammilind