gpt4 book ai didi

qt - QStackedWidget 从一页到另一页的导航

转载 作者:行者123 更新时间:2023-12-01 01:11:42 25 4
gpt4 key购买 nike

我认为我有一个相当基本的 Qt 问题,但我无法弄清楚:

我有一个包含 QStackedWidget 的 QMainWindow。那里的所有页面小部件都是从 QWidget 派生的单独的类。

所以:

QMainWindow 在一个类中实现了 QStacked Window。
堆叠小部件内的所有其他页面都是添加的类,并且都有自己的 .ui,其中填充了通过 Designer 的按钮和列表。

为了导航到不同的页面,在主窗口中我可以访问:ui.stackedWidget->setCurrentIndex(2);
看来我无法访问堆叠小部件内另一个页面上的 ui.stackedWidget ?我无法访问 ui.stackedWidget 因为 Ui 是主窗口类中的私有(private)成员。 (由 Qt 自动生成 - 使用 VS 插件添加 QT4 类)

我想知道,当单击属于此小部件内另一个页面的按钮时,如何跳转到堆叠小部件中的另一个页面?

笔记:

所有页面都添加到 mainWIdow 的构造函数中的 StackedWidget 中:

ui.stackedWidget->addWidget(page1Widget);
ui.stackedWidget->addWidget(page2Widget);
// etc..

page1Widget 内的按钮单击信号槽示例:
connect(ui.btnViewData, SIGNAL(clicked()), this, SLOT(viewData()));

::viewData()
{
// navigate to another page here.
// note: ui.stackedWidget->setCurrentIndex(3); is not accessible here!
}

最佳答案

我相信将你的 connect() 和 viewData() 函数放在你的 QMainWindow 对象中会解决你的问题,因为主窗口可以访问子窗口小部件和 QStackedWidget 项目发出的信号。

您可能需要为每个页面编写一个 Ui getter,然后执行类似的操作

connect(page1Widget->getUi().btnViewData, SIGNAL(clicked()), this, SLOT(viewData)));

希望能帮助到你,
干杯

关于qt - QStackedWidget 从一页到另一页的导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051161/

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