这可能是QObjects的树状结构和(例如)QGraphicsWidgets吗?我的意思是,我不能写这样的初始化列表:
class MyButton : public QGraphicsWidget
{
Q_OBJECT
public:
MyButton(int buttonId, QObject *parent = 0) : QObject(parent)
{
}
然后,就像
myButton = new MyButton(id, myObject);
我应该做.setParent还是什么?
更新:查看实际作业:
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*'
}
};
答案 0 :(得分:1)
我认为您在QObject父/子层次结构父项和图形场景中的parent
中混淆parent item
。如果你想要前者,你需要使用通常的setParent
机制。
无论哪种方式,基类构造尝试都是错误的。替换为:
MyButton(int buttonId, QGraphicsItem *parent = 0) : QGraphicsWidget(parent)
此外,如果你使用Qt 5,你可能希望查看Q_NULLPTR
而不是0
,NULL
,nullptr
和其他变体。
如果您希望图形项目成为父项,那么您需要使用继承QGraphicsObject
和QGraphicsItem
的{{1}}。它们可用于育儿目的。
此外,由于QObject
继承了QGraphicsWidget
,因此它可以直接用于两种育儿机制。