English 中文(简体)
Custom QGraphicsItems not compiling and gives "object is private" error
原标题:

I am trying to create a Custom QGraphicsItem button as shown by Fred here. The code which he posted can be found here.

The problem is when I try and compile the code I get the following two errors:

  • /usr/include/qt4/QtGui/qgraphicsitem.h ‘QGraphicsItem::QGraphicsItem(const QGraphicsItem&)’ is private
  • /usr/include/qt4/QtCore/qobject.h
    ‘QObject::QObject(const QObject&)’ is private

Here is the code snippet which essentially is the same as that in the sample above. The error is on the class deceleration.

class MyButton : public QObject, public QGraphicsItem
{
 Q_OBJECT
 Q_INTERFACES(QGraphicsItem)

public:
 MyButton(QGraphicsItem *parent = 0);
 MyButton(const QString normal, const QString pressed = "", QGraphicsItem *parent = 0);
....
}

Interestingly the other sample as shown here works fine. The sample code for that can be found here.

Any idea what is wrong? Thanks in advance.

问题回答

Those errors looks like an attempt to copy the button object. Compiler tries to generate MyButton copy constructor automatically and fails, because copy constructor of QObject (which is your button base) is private. Besides the errors you listed you should also see stuff like:

note: synthesized method  MyButton::MyButton(const MyButton&)  first required here

with source file name and line number following this message. If you don t see this message, try adding:

private:
    Q_DISABLE_COPY(MyButton)

to the MyButton class definition. Then you should see this:

error:  MyButton::MyButton(const MyButton&)  is private within this context




相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签