【发布时间】:2014-09-04 06:55:39
【问题描述】:
我已经关闭了返回 QFrame 的库。 我的程序的 GUI 是用 QML (Qt Quick 2.0) 开发的。 我需要将 QFrame (QWidget) 集成到 QML 的解决方案
注意: 我找到了示例:Qt_DIR/Examples/Qt-5.3/declarative/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;
};
【问题讨论】:
-
分享一些代码,否则所有答案都是猜测。这也显示了您到目前为止所做的事情以及答案可以依赖/基于的内容。对于您的错误描述,我猜您的场景文件头中有一个 import QtQuick 2.0,您的表单文件头中有 QtQuick 1.0/1.1。尝试将您的表单“移植”到 QtQuick 2.0