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

如何复制QWebPage?
EN

Stack Overflow用户
提问于 2015-09-07 07:28:13
回答 1查看 173关注 0票数 0

我想创建我自己的自定义页面。这个类继承自QWebPage。但是我想要创建它,从existing instance复制值,这样我就可以添加我自己的方法,覆盖一些东西,然后用我的自定义页面替换为setPage()

问题是:QObject复制构造函数似乎无法工作:

代码语言:javascript
复制
class webpage : public QWebPage
{
public:
    //webpage(QObject* parent = 0);
    webpage(QWebPage*);
    void foo();
}

webpage::webpage(QWebPage *page)
    : QWebPage(*page)
{
}

导致错误:

错误: C2248:'QObject::QObject‘:无法访问类'QObject’中声明的私有成员

我的问题是:我怎样才能解决这个问题?我真正想要的是将page参数对象复制到当前对象。

EN

回答 1

Stack Overflow用户

发布于 2015-09-07 09:13:55

要修复代码,请执行以下操作:

代码语言:javascript
复制
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()的私有部分中声明的。实际上,从QObject派生的所有Qt类(直接或间接)都使用这个宏来声明它们的复制构造函数和赋值操作符是私有的。在Qt对象模型页面上对身份与值的讨论中找到了推理。 主要的结果是,您应该使用指向QObject (或指向QObject子类)的指针,否则您可能会倾向于将QObject子类用作值。例如,如果没有复制构造函数,就不能使用QObject的子类作为要存储在其中一个容器类中的值。你必须储存指针。

[http://doc.qt.io/qt-5/qobject.html#no-copy-constructor-or-assignment-operator]

如果还想创建某种副本,恐怕您必须创建自己的set方法来复制所需的内容和/或属性。

另一个选项是创建一个类,其中包含作为成员的QWebPage指针。您可以使用内部QWebPage编写自己的方法,从而创建如何使用现有QWebPage实例的自定义方法。但是,只有在不需要在另一个上下文中使用现有实例的情况下,这才能起作用。

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

https://stackoverflow.com/questions/32433260

复制
相关文章

相似问题

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