2016-11-28 1 views
-2

동일한 지역 (상황에 따라 다름)에 다른 맞춤 위젯을 사용하고 싶습니다. 이를 위해 Interface 클래스와 파생 된 사용자 정의 클래스 위젯을 만들었습니다 (동일한 메소드와 청결을 위해).인터페이스 클래스를 폼에서 사용하여 원하는 파생 클래스를 사용하기 위해

내 인터페이스는 다음과 같습니다

IDial

파생 클래스 :

FirstDial, SecondDial

이 파생 클래스가 IDial에서 상속, 그래서 그들은 공통점이 기능 IDial에서.

프로그램을 시작할 때 표시 할 다이얼을 선택하고 싶습니다. 매크로 또는 매개 변수에 따라 다릅니다 (중요하지 않음).

내가 원하는 파생 클래스 (위젯)를 표시하려면 인터페이스 클래스 이름 (IDial)을 양식 (디자인 모드)의 "objectName"으로 사용하는 것 외에 다른 선택이 없습니다. .

문제는 Qt가이 인터페이스를 인스턴스화하려고한다는 것입니다 (순수 가상 함수로 인해 불가능하고 정상적입니다).

지역에 다른 위젯이 포함될 수 있음을 나타내려고합니다.이 위젯은 모두이 인터페이스에서 상속됩니다.

+0

불분명 한 당신이 요구하는 어떤 소스 파일에서

#include "firstdial.h" #include <QHBoxLayout> ... QHBoxLayout* layout; FirstDial* firstDial; 

이 클래스의 새로운 레이아웃과 개체를 만듭니다. – dtech

+0

@ddriver 알았어, 더 잘 설명하려고 노력할거야 – SuxZ

+1

작업 최소 예를 게시하십시오. – dtech

답변

0

IDial 클래스 대신 원하는 곳에 QFrame을 추가하십시오. 헤더 파일에서 :

ui->frame->setFrameShape(QFrame::NoFrame); // a frame you've created 
layout = new QHBoxLayout(ui->frame); 
firstDial = new FirstDial; 

레이아웃에 위젯을 추가합니다 :

layout->addWidget(firstDial);