0

これは私の最初の質問で、かなり苦労しています。エキセントリックな表示用のソフトウェアを作成するために Qt を使用しています。学生のグループが以前にこのプロジェクトを行っていたので、使用するコードを事前に作成しました。

私の問題は次のとおりです。通常の方法でコーディングしておらず、QDesigner を使用しています。QGroupBoxes を中に収めたい Scroll Area があります。「Properties」という名前の一般的なボックスがあり、垂直レイアウトの他のボックスがいくつか含まれています。

現在、ボックスの 1 つは「symbolgen」と呼ばれ、「SymbolGen」と呼ばれるカスタム クラスを使用しています。クラスは次のように定義されます。

class SymbolGen : public QGroupBox

ここで私がやりたいことは、「プロパティ」ボックスから alle ボックスを抽出することです。つまり、グループ「プロパティ」をラベル「プロパティ」で置き換え、その下を小さなボックスに置き換えたいと考えています。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://このエラーの原因となる行:

symbolgen = new SymbolGen(scrollAreaWidgetContents_2);

これは「ui_admin.h」にあります。

edit://「ui_admin.h」からの「scrollAreaWidgetContents_2」の定義:

scrollAreaWidgetContents_2 = new QWidget();
scrollAreaWidgetContents_2->setObjectName(QStringLiteral("scrollAreaWidgetContents_2"));
scrollAreaWidgetContents_2->setGeometry(QRect(0, 0, 503, 851));

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

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();
}
4

1 に答える 1

4

gのコンストラクターに渡されるだけの親ウィジェットのようQGroupBoxで、QGroupBox* ではなく QWidget* 型である必要があります。

コンストラクターはとにかくをQGroupBox期待しているので、宣言でそれを変更できます。QWidget*これがこのように行われた理由がある可能性があるため、クラスは親がグループ ボックスであるという事実に依存している可能性があります。それでも、私はそれを変更して、何が起こるか見てみます。

于 2016-06-21T12:14:32.777 に答える