首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制QWidget

复制QWidget
EN

Stack Overflow用户
提问于 2011-07-25 04:43:52
回答 1查看 9.1K关注 0票数 15

我需要能够复制一个Qwidget,这样我才能复制一个窗口,因为它在运行时会发生变化。这个是可能的吗?

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-25 04:53:27

这是设计好的。解决这个问题的常用方法是实现一个方法(通常称为clone()),该方法允许您指定在复制类的实例时应应用的确切语义。这种方法还可以防止无意复制,例如通过容器类进行复制。

Qt docs

无复制构造函数或赋值运算符

QObject既没有复制构造函数,也没有赋值运算符。这是设计好的。实际上,它们是声明的,但是在带有宏Q_DISABLE_COPY()的私有部分中。事实上,所有从QObject派生的Qt类(直接或间接)都使用此宏来声明它们的复制构造函数和赋值操作符是私有的。原因可以在Qt对象模型页面上关于Identity vs Value的讨论中找到。

主要结果是,您应该使用指向QObject (或指向您的QObject子类)的指针,否则您可能会尝试使用QObject子类作为值。例如,如果没有复制构造函数,就不能使用QObject的子类作为要存储在其中一个容器类中的值。您必须存储指针。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6809596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档