我如何复制q网页?
How do I copy the QWebPage?
我想创建自己的自定义页面。这个类继承自QWebPage
。但我想创建它复制值从一个existing instance
,所以我只是添加我自己的方法,覆盖一些东西,然后用我的自定义的setPage()
替换当前页面。
问题是:QObject
复制构造函数似乎不起作用:
class webpage : public QWebPage
{
public:
//webpage(QObject* parent = 0);
webpage(QWebPage*);
void foo();
}
webpage::webpage(QWebPage *page)
: QWebPage(*page)
{
}
导致错误:
错误:C2248: 'QObject::QObject':无法访问私有成员在类'QObject'中声明
我的问题是:我该如何解决这个问题?我真正想要的是复制page
参数对象到当前对象。
修改代码:
class webpage : public QWebPage
{
Q_OBJECT
public:
//webpage(QObject* parent = 0);
webpage::webpage(QWebPage *page)
: QWebPage(page)
{
}
void foo();
};
q网页的构造函数需要一个指针,但是你对它解引用了。这导致了你所描述的错误。
q网页派生自QObject,这意味着它既没有复制构造函数,也没有赋值操作符。这是由设计:
[http://doc.qt.io/qt-5/qobject.html no-copy-constructor-or-assignment-operator]QObject既没有复制构造函数,也没有赋值操作符。这是设计好的。实际上,它们是声明的,但是在私有的使用宏Q_DISABLE_COPY()。实际上,所有的Qt类派生自QObject(直接或间接)使用此宏来声明它们的复制构造函数和赋值操作符必须是私有的。的在Qt上对同一性与价值的讨论中找到了推理对象模型页。
主要的结果是应该使用指向QObject(或指向QObject的指针)的指针您的QObject子类),否则您可能会使用将QObject子类作为一个值。例如,没有副本构造函数时,不能使用QObject的子类作为要使用的值存储在一个容器类中。必须存储指针。
恐怕你必须创建自己的set方法来复制你需要的内容和/或属性,如果你还想创建一种副本。
另一种方法是创建一个类,其中包含一个q网页指针作为成员。您可以使用内部q网页编写自己的方法,从而创建如何使用现有q网页实例的自定义方法。但是,只有当您不需要在另一个上下文中使用现有实例时,这才会起作用。
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 当从函数参数中的临时值调用复制构造函数时
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 复制几乎为空的数组的最快方法
- 以下示例中如何避免代码复制?C++/库达
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 文件系统:复制功能的速度秘诀是什么
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 我如何复制q网页?