2014-07-14 156 views
6

我已經關閉了返回QFrame的庫。 我的程序的GUI是用QML(Qt Quick 2.0)開發的。 我需要解決QFrame(QWidget的)集成到QML如何將QWidget集成到QML中(Qt Quick 2.0)

注: 我發現例如:Qt_DIR /例子/ QT-5.3 /聲明/ cppextensions/qwidgets,該做些什麼,因爲我需要。在這個例子中,QWidged被添加到QGraphicsProxyWidget中。我這樣編寫我的代碼,但是當我運行我的應用程序時,它顯示在控制檯中:「無法將QtQuick 1.0項目(MyPushButton)添加到QtQuick 2.0場景中!」。這是該代碼:

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

分享一些代碼,否則所有答案都是猜測。這也顯示了你到目前爲止所做的工作以及答案可以依賴的基礎。對於你的錯誤描述,我*猜*你有一個導入QtQuick 2.0在你的場景文件頭和QtQuick 1.0/1.1在你的表單文件頭。嘗試將您的表單「移植」到QtQuick 2.0中 –

+0

可能出現[Qt5。在QML中嵌入QWidget對象](http://stackoverflow.com/questions/13014415/qt5-embed-qwidget-object-in-qml) –

回答

2

QGraphicsProxyWidget的目的是與QtQuick 1.使用已經有回答Qt5. Embed QWidget object in QML

另一個想法 - 你可以嵌入裏面QQuickItem您的QWidget。或者查看QtQUickControls如何使用QtQuick2繪製它們