2010-05-15 5 views
0

저는 디자이너에서 만든 gui를 가지고 있습니다. stackedWidget 포함
QMainWIndow는 애플리케이션 qwebkit 위젯 일부 사용자 흐름 후에는 stackedWidget
내가 QMainWindow의 constractor 사용할 제 위젯을 가운데, qtree에서 위젯을 포함 인덱스 1로 변경 포함
stackedWidget 인덱스 0으로 시작 이 코드 줄
this-> setCentralWidget (ui.webView); 응용 프로그램이 전환 명령에서 오는
인 색인 번호 1로 전환하는 경우.
왜?QMainWindow setCentralWidget 및 stackedWidget의 문제

답변

0

마치 QMainWindow 중앙 위젯이 스택 위젯이어야하며 webView가 아닌 ​​것처럼 들립니다.

4

스택 위젯은 다른 위젯을 포함하는 컨테이너 위젯입니다. 귀하의 설정에서, 당신은 두 개의 스택 위젯 : QWebKit 위젯과 QTreeWidget을 사용하는 것 같습니다.

QMainWindow에 표시하려면 QMainWindow의 중앙 위젯을 스택 위젯으로 설정하고 QStackedWidget::changeCurrentIndex() 슬롯을 사용하여 첫 번째 위젯에서 다른 위젯으로 전달해야합니다.

누적 위젯의 요소로 QPushButtonQLabel을 사용하는 코드 샘플입니다.

QMainWindow *mainWindow = new QMainWindow(); 
QStackedWidget *stackedWidget = new QStackedWidget(); 

// stacked item 0 
QPushButton *pushButton = new QPushButton("Here is a button"); 
stackedWidget->addItem(pushButton); 

// stacked item 1 
QLabel *label = new QLabel("Here is a label"); 
stackedWidget->addItem(label); 

// add the stacked widget to the main window 
mainWindow->setCentralWidget(stackedWidget); 

라벨에있는 버튼에서 현재 표시 항목을 변경하려면, 당신은 사용할 수 있습니다 : 코멘트에

stackedWidget->setCurrentIndex(1); // go to the label widget 
stackedWidget->setCurrentIndex(0); // go back to the button widget 

대체 응답을. 누적 된 위젯을 사용 하시겠습니까? 사실 스태킹 위젯은 위젯의 프리젠 테이션과 같은 탭을 만드는 데 특화되어 있습니다. 한 위젯에서 다른 위젯으로 전환하려면 다음 코드 에서처럼 QMainWindow :: setCentralWidget() 메서드를 직접 사용할 수 있습니다.

QMainWindow *mainWindow = new QMainWindow(); 
QVector< QWidget* > widgets; 

// stacked item 0 
QPushButton *pushButton = new QPushButton("Here is a button"); 

// stacked item 1 
QLabel *label = new QLabel("Here is a label"); 

widgets << pushButton << label; 

// add the first widget to the main window 
mainWindow->setCentralWidget(widgets[0]); 

당신이 다른 위젯으로 전환 할

, 당신은 사용할 수 있습니다

mainWindow->setCentralWidget(widgets[1]); 
+0

이것은 현재 보유하고있는 것입니다. 기본 창에 붙어있는 위젯 인 setCentralWidget에서 가져 오는 효과가 필요합니다. 이는 찾고자하는 모양이며 디자이너를 통해 가져올 수 없습니다. – user63898

+0

글쎄, 지금 무슨 문제인지 이해가 안돼. 'QStackedWidget'에서 정렬 된 위젯은 사용 가능한 전체 공간을 차지해야합니다. 문제를 자세히 설명해 주시겠습니까? – Lohrun

+0

잘 아니요, 만약 내가 doCentralWidget을 사용하지 않는다면 모든 공간을 감당하지 않습니다. 하지만 setCentralWidget을 사용한다면, 두 번째 스택 위젯으로 전환 할 때 예외가 발생합니다. – user63898

1

당신이 웹보기를 정렬 중심하려는 경우, setCentralWidget 당신이 생각하는 것이 아니다. 중앙 위젯은 기본 창의 기본 위젯입니다. 용어 central은 컨텐츠를 넣는 기본 위젯이고 툴바, 도크 위젯 및 상태 표시 줄은 "액세서리 위젯"과 같은 의미입니다.

위젯을 정렬하거나 위치를 지정하려면 QLayout을보고 기본 창이나 중앙 위젯에 적절한 레이아웃을 추가하십시오.