Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QGraphicsWidget作为QObject的子对象_C++_Qt_Qtgui_Qgraphicsitem_Qgraphicswidget - Fatal编程技术网

C++ QGraphicsWidget作为QObject的子对象

C++ QGraphicsWidget作为QObject的子对象,c++,qt,qtgui,qgraphicsitem,qgraphicswidget,C++,Qt,Qtgui,Qgraphicsitem,Qgraphicswidget,这是否可能有QObject和(例如)QGraphicsWidget的树状结构?我的意思是,我不能写这样的初始化列表: class MyButton : public QGraphicsWidget { Q_OBJECT public: MyButton(int buttonId, QObject *parent = 0) : QObject(parent) { } 然后,像 myButton = new MyButton(id, myObject); 我该怎么

这是否可能有QObject和(例如)QGraphicsWidget的树状结构?我的意思是,我不能写这样的初始化列表:

class MyButton : public QGraphicsWidget
{
    Q_OBJECT
public:
    MyButton(int buttonId, QObject *parent = 0) : QObject(parent)
    {
    }
然后,像

myButton = new MyButton(id, myObject);
我该怎么做?是设置家长还是什么

更新:见实际分配:

class myObject : public QObject
{
    Q_OBJECT
public:
    MyObject(QObject *parent = 0) : QObject(parent) {
        }

    MyButton *myButton;

    void showButton(){
        myButton = new MyButton(id, this); //no matching function for call to 'MyButton::MyButton(MyObject* const)'
//note:   no known conversion for argument from 'MyObject* const' to 'QGraphicsObject*'
    }
};

我认为您混淆了图形场景中的QObject parent/child hierarchy parent和
parent item
。如果需要前者,则需要使用通常的
setParent
机制

无论如何,基类构造的尝试都是错误的。将其替换为以下内容:

MyButton(int buttonId, QGraphicsItem *parent = 0) : QGraphicsWidget(parent)
此外,如果您使用Qt 5,您可能希望签出
Q_NULLPTR
而不是
0
NULL
NULLPTR
和其他变体

如果希望图形项成为父项,则需要使用继承了
QGraphicsItem
QObject
QGraphicsObject
。它们可以用于两种育儿目的


此外,由于
QGraphicsWidget
继承了
qgraphicsbject
,因此它可以直接用于两种育儿机制。

不,我只是希望在标记答案之前找到一些解决方法。但也许你是对的,没有办法建造这样的建筑hierarchy@DensiTensy:答案中有,setParent:)