gpt4 book ai didi

c++ - QStackedWidget 从第 1 页导航到第 2 页

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:47 25 4
gpt4 key购买 nike

我有一个继承自 QMainWindow 的基类 MainWindowMainWindow 在其 Ui 文件中有 QSTackedWidget。我在不同的类中有 Page1Page2 那里的所有页面小部件都是从 QWidget 派生的单独类。

QMainWindow 在一个类中实现了 QStackedWindow。堆叠小部件内的所有其他页面都是添加的类,并且都有自己的 .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();
}

问题在于单击按钮会打开一个新窗口,而不是堆叠格式的单个窗口。我哪里错了??如何解决这个问题?

最佳答案

不必在主窗口中进行更改,您可以在页面中进行。

当您将一个小部件插入到 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();
}

关于c++ - QStackedWidget 从第 1 页导航到第 2 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com