2014-07-14 152 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绘制它们