2016-06-21 6 views
0

이것은 내 첫 번째 질문이며, 저는 매우 고심하고 있습니다. 나는 심플한보기를위한 소프트웨어를 만들기 위해 Qt를 사용하고 있습니다. 학생 그룹이 이전에이 프로젝트를 수행 했으므로 미리 제작 된 코드로 작업 할 수있었습니다."QWidget *"의 인수 1에서 "QGroupBox *"로의 변환이 불가능합니다.

내 문제는 다음과 같습니다. 일반적인 방법으로 코딩하지 않고 QDesigner를 사용합니다. 스크롤 영역에 QGroupBox를 안에 넣고 싶습니다. 세로 레이아웃으로 다른 상자를 보유하고있는 "등록 정보"라는 일반 상자가 있습니다.

이제는 "symbolgen"이라는 상자 중 하나가 "SymbolGen"이라는 사용자 지정 클래스를 사용하고 있습니다. 클래스는 다음과 같이 정의됩니다 :

class SymbolGen : public QGroupBox 

이제 "속성"상자에서 상자를 추출하는 것이 좋습니다. 즉, "속성"그룹을 "속성"레이블로 바꾸고 작은 상자로 바꾸기를 원합니다.

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은"(일부를 보유 이제 무엇을 Qt는 나에게 말한다하면은 다음과 같다 수업에서 중요한 변수) 다른 그룹 상자가 필요합니다. 그러면이 상자를 오류없이 어떻게 분리 할 수 ​​있습니까?

도움 주셔서 감사합니다.

편집 :이 오류가 발생합니다 // 라인 :이 하나가 "ui_admin.h"에서 발견

symbolgen = new SymbolGen(scrollAreaWidgetContents_2); 

.

편집 :

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

편집 : // SymbolGen :: SymbolGen (const를 SymbolGen &) : "ui_admin.h"에서 "scrollAreaWidgetContents_2"의 // 정의

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

오류가 발생한 행을 게시 할 수도 있습니까? –

+0

물론, 나는 그것을 메인 포스트에 추가 할 것이다. –

+0

이제'SymbolGen'의 복사 생성자 안에서 에러가 발생하는지, 아니면이 복사 생성자를 호출 할 지 궁금합니다. 그러나 복사 생성자의 인수가 명백하게'QGroupBox *'유형이 아니기 때문에 후자는 실제로 이해가되지 않습니다. 'SymbolGen :: SymbolGen (const SymbolGen &)'의 내용을 게시 할 수 있습니까? –

답변

2

는 것 같다 g은 부모 위젯으로, QGroupBox의 생성자로 전달되고 QGroupBox * 대신 QWidget * 유형이어야합니다.

어쨌든 QGroupBox 생성자가 QWidget*을 예상하므로 선언에서이를 변경할 수 있습니다. 이 방법으로 이렇게 된 이유가있을 수 있으므로 클래스는 부모가 그룹 상자라는 사실에 의존 할 수 있습니다. 그래도 나는 그것을 변화시키고 어떤 일이 일어나는지 보려고합니다.