Qt 从“的论点1”转换而来;QWidget*”;至;QGroupBox*”;不可能

Qt 从“的论点1”转换而来;QWidget*”;至;QGroupBox*”;不可能,qt,qwidget,qgroupbox,Qt,Qwidget,Qgroupbox,这是我的第一个问题,我很困惑。我正在使用Qt创建一个用于偏心查看的软件。以前有一群学生做过这个项目,所以我得到了预先制作好的代码 我的问题如下: 我不是以通常的方式编码,而是使用QDesigner。我有一个滚动区域,我想在里面放一些QGroupBox。有一个名为“Properties”的常规框,其中包含一些垂直布局的其他框 现在其中一个框被称为“symbolgen”,并且正在使用一个名为“symbolgen”的自定义类。该类的定义如下: class SymbolGen : public QGro

这是我的第一个问题,我很困惑。我正在使用Qt创建一个用于偏心查看的软件。以前有一群学生做过这个项目,所以我得到了预先制作好的代码

我的问题如下: 我不是以通常的方式编码,而是使用QDesigner。我有一个滚动区域,我想在里面放一些QGroupBox。有一个名为“Properties”的常规框,其中包含一些垂直布局的其他框

现在其中一个框被称为“symbolgen”,并且正在使用一个名为“symbolgen”的自定义类。该类的定义如下:

class SymbolGen : public QGroupBox
现在我想做的是从“属性”框中提取所有框。这意味着:我想用标签“Properties”替换组“Properties”,下面是较小的框。现在Qt对我说的是:

Fehler: C2664: "SymbolGen::SymbolGen(const SymbolGen &)" : Konvertierung von Argument 1 von "QWidget *" in "QGroupBox *" nicht m”glich
是的,我是德国人,用英语说:

Error: C2664: "SymbolGen::SymbolGen(const SymbolGen &)" : Conversion from argument 1 of "QWidget *" to "QGroupBox *" not possible.
我在这里看到的是,这个特定的分组框“symbolgen”(包含类中的一些重要变量)需要另一个分组框。那么我怎样才能把这个盒子正确地分开呢

谢谢你的帮助

edit://Line 导致此错误的原因:

symbolgen = new SymbolGen(scrollAreaWidgetContents_2);
这个可以在“ui_admin.h”中找到

edit://Definition 从“ui_admin.h”中选择“scrollAreaWidgetContents_2”:

edit://SymbolGen::SymbolGen(const SymbolGen&):


似乎
g
只是父窗口小部件,它只是传递给
QGroupBox
的构造函数,应该是QWidget*类型而不是QGroupBox*


您可以在声明中更改它,因为
QGroupBox
构造函数无论如何都需要
QWidget*
。这样做可能有原因,因此类可能依赖于父对象是组框这一事实。不过,我还是会尝试更改它,看看会发生什么。

似乎
g
只是父窗口小部件,它只是传递给
QGroupBox
的构造函数,应该是QWidget*而不是QGroupBox*


您可以在声明中更改它,因为
QGroupBox
构造函数无论如何都需要
QWidget*
。这样做可能有原因,因此类可能依赖于父对象是组框这一事实。尽管如此,我还是会尝试更改它,看看会发生什么。

您是否也可以发布导致错误的行?当然,我会在我的主要帖子中添加它。现在我想知道错误是否发生在
SymbolGen
的复制构造函数中,或者调用此复制构造函数时。但后者没有真正意义,因为复制构造函数的参数显然不是
QGroupBox*
类型。您可以发布
SymbolGen::SymbolGen(const SymbolGen&)
的内容吗?您的
SymbolGen
构造函数是什么样子的?我添加了构造函数。您还可以发布导致错误的行吗?当然,我将把它添加到我的主要帖子中。现在我想知道这个错误是发生在
SymbolGen
的复制构造函数中还是调用这个复制构造函数时。但后者没有真正意义,因为复制构造函数的参数显然不是
QGroupBox*
类型。你能发布
SymbolGen::SymbolGen(const-SymbolGen&)
的内容吗?你的
SymbolGen
构造函数是什么样子的?我添加了构造函数。
scrollAreaWidgetContents_2 = new QWidget();
scrollAreaWidgetContents_2->setObjectName(QStringLiteral("scrollAreaWidgetContents_2"));
scrollAreaWidgetContents_2->setGeometry(QRect(0, 0, 503, 851));
SymbolGen::SymbolGen(QGroupBox *g) : QGroupBox(g)
{
    srand (time(NULL));

    //Wörterquelle lesen

    std::ifstream f("source/ngerman.txt");
    std::string l;
    if(f.is_open())
    {
        while(f.good())
        {
            getline(f,l);
            words.push_back(l);
            //if( words.size() > 10000 ) break;
        }
    }
    f.close();

    //Satzquelle lesen
    std::ifstream fs("source/sentences.txt");
    //std::string l;
    if(fs.is_open())
    {
        while(fs.good())
        {
            getline(fs,l);
            phrase.push_back(l);
            //if( words.size() > 10000 ) break;
        }
    }
    fs.close();
}