我需要能够复制一个Qwidget,这样我才能复制一个窗口,因为它在运行时会发生变化。这个是可能的吗?
void Duplicate(QWidget * Show)
{
//I tried...
Qwidget Shw = *Show; //but operator= is private
//and the copy constructor (I think), which is also private
Qwidget Shw(*Show);
//
Shw.Show();
}发布于 2011-07-25 04:53:27
这是设计好的。解决这个问题的常用方法是实现一个方法(通常称为clone()),该方法允许您指定在复制类的实例时应应用的确切语义。这种方法还可以防止无意复制,例如通过容器类进行复制。
无复制构造函数或赋值运算符
QObject既没有复制构造函数,也没有赋值运算符。这是设计好的。实际上,它们是声明的,但是在带有宏Q_DISABLE_COPY()的私有部分中。事实上,所有从QObject派生的Qt类(直接或间接)都使用此宏来声明它们的复制构造函数和赋值操作符是私有的。原因可以在Qt对象模型页面上关于Identity vs Value的讨论中找到。
主要结果是,您应该使用指向QObject (或指向您的QObject子类)的指针,否则您可能会尝试使用QObject子类作为值。例如,如果没有复制构造函数,就不能使用QObject的子类作为要存储在其中一个容器类中的值。您必须存储指针。
https://stackoverflow.com/questions/6809596
复制相似问题