C++ 如何复制QQ网页?
我想创建自己的自定义页面。此类继承自。但是我想通过复制一个的值来创建它,这样我就可以添加我自己的方法,重写一些东西,然后用我的自定义页面替换当前页面 问题是:C++ 如何复制QQ网页?,c++,qt,copy-constructor,qwebview,qobject,C++,Qt,Copy Constructor,Qwebview,Qobject,我想创建自己的自定义页面。此类继承自。但是我想通过复制一个的值来创建它,这样我就可以添加我自己的方法,重写一些东西,然后用我的自定义页面替换当前页面 问题是:QObjectcopy构造函数似乎不起作用: class webpage : public QWebPage { public: //webpage(QObject* parent = 0); webpage(QWebPage*); void foo(); } webpage::webpage(QWebPage *
QObject
copy构造函数似乎不起作用:
class webpage : public QWebPage
{
public:
//webpage(QObject* parent = 0);
webpage(QWebPage*);
void foo();
}
webpage::webpage(QWebPage *page)
: QWebPage(*page)
{
}
导致错误的原因:
错误:C2248:“QObject::QObject”:无法访问私有成员
在类“QObject”中声明
我的问题是:我如何解决这个问题?我真正想要的是将页面
参数对象复制到当前对象。要修复代码:
class webpage : public QWebPage
{
Q_OBJECT
public:
//webpage(QObject* parent = 0);
webpage::webpage(QWebPage *page)
: QWebPage(page)
{
}
void foo();
};
QWebPage的构造函数需要一个指针,但您取消了对它的引用。这导致了您描述的错误
QWebPage派生自QObject,这意味着它既没有复制构造函数也没有赋值运算符。这是出于设计:
QObject既没有复制构造函数也没有赋值运算符。
这是故意的。事实上,它们是公开的,但是是私下的
带有宏Q_DISABLE_COPY()的节。事实上,所有的Qt类
从QObject派生(直接或间接)使用此宏声明
它们的复制构造函数和赋值运算符必须是私有的。这个
在Qt上关于身份与价值的讨论中可以找到推理
对象模型页面
主要结果是您应该使用指向QObject(或
您的QObject子类),否则您可能会尝试使用
将QObject子类作为值。例如,没有副本
构造函数,不能使用QObject的子类作为要创建的值
存储在其中一个容器类中。必须存储指针
[
如果仍要创建一种副本,恐怕您必须创建自己的set方法来复制所需的内容和/或属性
另一个选项是创建一个包含QWebPage指针作为成员的类。您可以使用内部QWebPage编写自己的方法,从而创建如何使用现有QWebPage实例的自定义方法。但只有在不需要在其他上下文中使用现有实例的情况下,这才有效。需要使用哪种数据从QWebPage的一个实例到另一个实例的py?
QObject
具有特殊设计,禁用直接复制。您需要实现方法webpage*webpage::clone()
这将提供一个具有必要逻辑的深度副本。您应该提到,出于某种原因,它被设计禁用。请参阅下面的答案。@vahancho:我想将对象的浅层副本复制到正在网页::网页(QWebPage*页)中创建的对象
constructor@SaZ:我不太明白,我要复制的对象是QWebPage
类型的setPage()
的返回值。我将如何创建克隆()
QWebPage内的方法class?Jack问的是复制,而不是Qt内存模型或继承。没错,我说不应该复制QObject。这是我的解释。