QStackedWidget 从第 1 页导航到第 2 页
QStackWidget navigate from page1 to page 2
我有一个继承自 QMainWindow
的基础 class MainWindow
。
MainWindow
在其 Ui 文件中有 QSTackedWidget
。我在不同的 classes 中有 Page1
和 Page2
那里的所有页面小部件都是从 QWidget
.
派生的单独的 classes
QMainWindow
将 QStackedWindow
合二为一 class。堆叠小部件内的所有其他页面都添加了 classes 并且都有自己的 .ui 填充按钮
我实现了
Page1* page1obj = new Page1;
Page2* page2obj = new Page2;
ui->stackedWidget->insertWidget(0,page1obj);
ui->stackedWidget->insertWidget(1,page2obj);
它有一个 ui 文件,其中有下一个按钮 。单击它应该转到第 2 页;
Page1.cpp
connect(m_ui>nextButton,&QPushButton::clicked,this,&Page1::onclicked);
void Page1::onclicked()
{
Mainwindow* obj = new MainWindow;
obj->openPage2();
}
问题在于单击按钮会打开一个新的 window,而不是堆叠格式的单个 window。我哪里错了??如何解决这个问题?
不必在主窗口中进行更改,您可以在页面中进行更改。
当您将小部件插入 QStackedWidget
时,它被设置为父小部件,因此我们可以使用 parentWidget()
方法访问 QStackedWidget
:
void Page1::onclicked()
{
QStackedWidget *stack = qobject_cast<QStackedWidget* >(parentWidget());
if(stack)
stack->setCurrentIndex(1);
}
更新:
如果你想使用 MainWindow
,你不必创建 MainWindow
,而是使用亲子关系访问它,最后进行转换
mainwindow
└── stackedwidget
├── page1
└── page2
void Page1::onclicked()
{
MainWindow *mainwindow = qobject_cast<MainWindow* >(parentWidget()->parentWidget());
if(mainwindow)
mainwindow->openPage2();
}
我有一个继承自 QMainWindow
的基础 class MainWindow
。
MainWindow
在其 Ui 文件中有 QSTackedWidget
。我在不同的 classes 中有 Page1
和 Page2
那里的所有页面小部件都是从 QWidget
.
QMainWindow
将 QStackedWindow
合二为一 class。堆叠小部件内的所有其他页面都添加了 classes 并且都有自己的 .ui 填充按钮
我实现了
Page1* page1obj = new Page1;
Page2* page2obj = new Page2;
ui->stackedWidget->insertWidget(0,page1obj);
ui->stackedWidget->insertWidget(1,page2obj);
它有一个 ui 文件,其中有下一个按钮 。单击它应该转到第 2 页;
Page1.cpp
connect(m_ui>nextButton,&QPushButton::clicked,this,&Page1::onclicked);
void Page1::onclicked()
{
Mainwindow* obj = new MainWindow;
obj->openPage2();
}
问题在于单击按钮会打开一个新的 window,而不是堆叠格式的单个 window。我哪里错了??如何解决这个问题?
不必在主窗口中进行更改,您可以在页面中进行更改。
当您将小部件插入 QStackedWidget
时,它被设置为父小部件,因此我们可以使用 parentWidget()
方法访问 QStackedWidget
:
void Page1::onclicked()
{
QStackedWidget *stack = qobject_cast<QStackedWidget* >(parentWidget());
if(stack)
stack->setCurrentIndex(1);
}
更新:
如果你想使用 MainWindow
,你不必创建 MainWindow
,而是使用亲子关系访问它,最后进行转换
mainwindow
└── stackedwidget
├── page1
└── page2
void Page1::onclicked()
{
MainWindow *mainwindow = qobject_cast<MainWindow* >(parentWidget()->parentWidget());
if(mainwindow)
mainwindow->openPage2();
}