2014-03-06 4 views
0

UI를 만드는 데 어려움이 있습니다.QTabWidget이 나타나지 않습니다.

내가 필요한 것 : 탭과 같은 3는 QWidget과

1 QTabWidget. 이 위젯 중 하나는 QPushButtons, QLineEdits를 포함하고 다른 QTabWidget을 포함해야합니다.

내 문제 :

내 다른 QTabWidget에 성공했습니다

이 하나가 표시되지 않습니다. 저는 수동으로 QPushButton과 QLineEdit을 .ui 파일에 넣었습니다. 이제이 동일한 페이지에 QTabWidget을 동적으로 생성하려고합니다.

내 페이지 코드 :

namespace Ui 
{ 
class cImageInterface; 
} 

class cImageInterface : public QWidget 
{ 
    Q_OBJECT 

public: 
    cImageInterface(); 
    ~cImageInterface(); 

private: 
    Ui::cImageInterface* ui; 

cAppTabWidget* tabW_Application; 
}; 

생성자 :

cImageInterface::cImageInterface() : ui(new Ui::cImageInterface) 
{ 
    tabW_Application = new cAppTabWidget(this); 

    ui->setupUi(this); 
} 

QTabWidget 코드 :

class cAppTabWidget : public QTabWidget 
{ 
    Q_OBJECT 

public: 
    explicit cAppTabWidget(QWidget* parent); 
    ~cAppTabWidget(); 

protected: 

private: 
Ui::cAppTabWidget* ui; 
cAppInterface* tab_Application; 
int m_NbTab; 
}; 

생성자 :

cAppTabWidget::cAppTabWidget(QWidget* parent) 
          : ui(new Ui::cAppTabWidget) 
          , tab_Application(new cAppInterface) 
          , m_NbTab(1) 
{ 
    this->setGeometry(0, 230, 800, 360); 
    this->addTab(tab_Application, "App5896"); 
} 
,

cAppInterface는 생성자에 setupUi 만있는 QWidget 파생 클래스입니다. show()으로 QTabWidget을 볼 수 있지만 내 페이지 안에 넣을 수는 없습니다.

감사합니다.

+0

Hummm, 그것은 가능하다 페이지로 2 레이아웃을 가지고? 또는 하나만 x, y, 등 값? 왜냐하면 이것은 내가 원하는 바 아니기 때문입니다. http://imgur.com/oZ7ASYY EDIT : 나는 바보 같아서 해결책을 찾았습니다. 괜찮 으면 업데이트 할 것입니다. – MokaT

+0

그것은 작동하지 않습니다. 저는 레이아웃을 .ui 파일에 넣었고'ui-> appTabLayout-> addWidget (tabW_Application);'을'cImageInterface' 생성자에 컴파일했지만, 'core dumped' 오류 – MokaT

+1

'ui-> setupUi (this)'이전에'ui-> appTabLayout-> addWidget (tabW_Application);을하고 있습니까? 'setupUi'를 호출하기 전에'ui' 멤버에 접근 할 수 없습니다. – thuga

답변

1

나를 도와 준 thuga에게 감사드립니다.

해결책은 레이아웃을 cImageInterface에 넣은 다음 QTabWidget을 넣는 것입니다.

나는 코드에서 생성하기 위해 문제를 겪었으므로 이것을 .ui 파일에 넣었다.

<layout class="QVBoxLayout" name="appTabLayout"> 
<property name="sizeConstraint"> 
<enum>QLayout::SetNoConstraint</enum> 
</property> 

다음을 수행 할 수 있습니다

cImageInterface::cImageInterface() : ui(new Ui::cImageInterface) 
{ 
    tabW_Application = new cAppTabWidget(this); 

    ui->setupUi(this); 

    ui->appTabLayout->addWidget(tabW_Application); 
} 
관련 문제