QWidgets간에 전환하고 싶습니다. 아래 코드에서 sceneWidget
은 어떤 버튼을 눌렀는지에 따라 view1
또는 view2
중 하나를 표시하고 싶습니다.QWidgets 간 전환
그러나 코드는 거의 그렇게하지 않습니다. 뭐가 잘못 되었 니? (제외 나는 다음 단계로 떠날 매우 추한 전역 변수에서.)
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>
QGraphicsView* getView(int x, int y, int w, int h)
{
QGraphicsScene* scene = new QGraphicsScene;
scene->addItem(new QGraphicsEllipseItem(x,y,w,h));
QGraphicsView* view = new QGraphicsView(scene);
return view;
}
QVBoxLayout* rightVbox;
QGraphicsView* view1;
QGraphicsView* view2;
void c1() {
rightVbox->insertWidget(0, view1);
}
void c2() {
rightVbox->insertWidget(0, view2);
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
view1 = getView(0,0,100,50);
view2 = getView(0,0,50,100);
QWidget* mainWidget = new QWidget;
QHBoxLayout* hbox = new QHBoxLayout(mainWidget);
QWidget* buttonsWidget = new QWidget;
hbox->addWidget(buttonsWidget);
QVBoxLayout* leftVbox = new QVBoxLayout(buttonsWidget);
QPushButton* button1 = new QPushButton("Scene 1", buttonsWidget);
QPushButton* button2 = new QPushButton("Scene 2", buttonsWidget);
leftVbox->addWidget(button1);
leftVbox->addWidget(button2);
QWidget* sceneWidget = new QWidget;
hbox->addWidget(sceneWidget);
rightVbox = new QVBoxLayout(sceneWidget);
rightVbox->insertWidget(0, view1);
QObject::connect(button1, &QPushButton::clicked, c1);
QObject::connect(button2, &QPushButton::clicked, c2);
mainWidget->show();
return app.exec();
}
QTabWidget과 QStackedWidget 사이의 일반적인 비교는 나에게 하나의 탭 또는 스택의 수에 상한이없는 경우에 적합 하나인지 궁금합니다. 위젯이 수백 또는 수천에 이르는 경우 QStackedWidget이 적합한 지 여부를 알고 있습니까? – Calaf
스택 위젯은 탭 위젯에 비해 여러 위젯에 맞게 확장되었습니다. 그것을 밖으로 시도, 그것은 작동합니다. – milianw