2014-07-14 13 views
6

Mam zamkniętą bibliotekę, która zwraca QFrame. GUI mojego programu opracowano za pomocą QML (Qt Quick 2.0). muszę rozwiązanie zintegrować QFrame (QWidget) do QMLJak zintegrować QWidget w QML (Qt Quick 2.0)

Uwaga: znalazłem przykład: Qt_DIR/examples/Qt 5.3/deklaratywnych/cppextensions/qwidgets, że coś zrobić jak trzeba. W tym przykładzie QWidged jest dodatkiem do QGraphicsProxyWidget. Piszę mój kod w ten sposób, ale kiedy uruchomię swoją aplikację, pokaże mi się w konsoli: "Nie mogę dodać elementu QtQuick 1.0 (MyPushButton) do sceny QtQuick 2.0!". Jest to kod:

class MyPushButton : public QGraphicsProxyWidget 
{ 
    Q_OBJECT 
    Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) 

public: 
    MyPushButton(QGraphicsItem* parent = 0) 
     : QGraphicsProxyWidget(parent) 
    { 
     widget = new QPushButton("MyPushButton"); 
     widget->setAttribute(Qt::WA_NoSystemBackground); 
     setWidget(widget); 

     QObject::connect(widget, SIGNAL(clicked(bool)), this, SIGNAL(clicked(bool))); 
    } 

    QString text() const 
    { 
     return widget->text(); 
    } 

    void setText(const QString& text) 
    { 
     if (text != widget->text()) { 
      widget->setText(text); 
      emit textChanged(); 
     } 
    } 

Q_SIGNALS: 
    void clicked(bool); 
    void textChanged(); 

private: 
    QPushButton *widget; 
}; 


private: 
    QPushButton *widget; 
}; 
+0

Udostępniaj kod, w przeciwnym razie wszystkie odpowiedzi są zgadywankami. Pokazuje to również, co zrobiłeś do tej pory i na jakie odpowiedzi może polegać/opierać się. Dla twojego opisu błędu, i * guess * masz import QtQuick 2.0 w nagłówku pliku sceny i QtQuick 1.0/1.1 w nagłówku pliku formularza. Spróbuj "przenieść" swój formularz do QtQuick 2.0 –

+0

Możliwy duplikat [Qt5. Osadź obiekt QWidget w QML] (http://stackoverflow.com/questions/13014415/qt5-embed-qwidget-object-in-qml) –

Odpowiedz

2

QGraphicsProxyWidget jest przeznaczony do użycia z QtQuick 1. Już nie ma odpowiedzieć Qt5. Embed QWidget object in QML

inna myśl - można umieścić swój QWidget wewnątrz QQuickItem. Lub sprawdź w QtQUickControls, jak są pomalowane QtQuick2

Powiązane problemy