Geo*_*Shg 14 c++ qt copy-constructor qwidget
我需要能够复制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();
}
Run Code Online (Sandbox Code Playgroud)
Stu*_*lar 14
这是设计的.解决它的常用方法是实现一个方法(通常称为clone()),它允许您指定在复制类的实例时应该应用的确切语义.这种方法还可以防止无意的副本被隐式地制作,例如通过容器类.
来自Qt文档:
没有复制构造函数或赋值运算符
QObject既没有复制构造函数也没有赋值运算符.这是设计的.实际上,它们是声明的,但是在具有宏Q_DISABLE_COPY()的私有部分中.实际上,从QObject(直接或间接)派生的所有Qt类都使用此宏来声明其复制构造函数和赋值运算符是私有的.推理可以在Qt对象模型页面上关于Identity vs Value的讨论中找到.
主要结果是你应该使用指向QObject(或你的QObject子类)的指针,否则你可能会试图将QObject子类用作值.例如,如果没有复制构造函数,则不能使用QObject的子类作为要存储在其中一个容器类中的值.你必须存储指针.
| 归档时间: |
|
| 查看次数: |
6971 次 |
| 最近记录: |