gpt4 book ai didi

c++ - QtT 如何在 QMainWindow 中更改中央小部件时保存数据/状态

转载 作者:行者123 更新时间:2023-11-28 03:34:38 29 4
gpt4 key购买 nike

我继承了 QmainWindow 类,用作我正在构建的应用程序的主窗口。
我已将中央小部件设置为指向我创建的另一个类的指针。

//main window constructor
postEntryWidget = 0; // null pointer to another class that extends QWidget
dataEntryWidget = new Data_Entry_Widget; //extends QWidget
setCentralWidget(dataEntryWidget); //set the widget in the main window

当用户点击一个 Action 时,这会将中央小部件设置为另一个指向另一个小部件类的指针。

/*
*this is the implementation of the slot that would be connected to the QAction
*connected to the postEntryWidget slot
*/
if(!postEntryWidget)
postEntryWidget = new Post_Entry_Widget;
setCentralWidget(postEntryWidget);

/*
*this is the implementation of the slot that would be connected to the QAction
*connected to the dataEntryWidget slot
*/
if(!dataEntryWidget)
dataEntryWidget = new Post_Entry_Widget;
setCentralWidget(dataEntryWidget);

这会在 View 之间来回切换时中断。如果我向前面的 View 添加一个空点,当我返回到该 View 时,我会丢失数据。

 /*
*this is the implementation of the slot that would be connected to the QAction
*connected to the postEntryWidget slot
*/
dataEntryWidget = 0; //set the previous widget to a null pointer but loses data
if(!postEntryWidget)
postEntryWidget = new Post_Entry_Widget;
setCentralWidget(postEntryWidget);

如何在不创建自定义数据结构的情况下保持两个 View 之间的状态,或者这是一种不好的做法。我最熟悉 php 和 web 开发,所以我不确定这是否是解决此问题的最佳方法。

提前致谢

最佳答案

不太确定您的目标是什么。但是,如果您试图允许某人能够返回到他们正在处理的事情,那么也许您最好使用选项卡小部件而不是隐藏该工作的存在?

QTabWidget documentation

Qt Tabbed Dialog example

因此,您可以将其设为中央小部件,并在其下插入 Post_Entry_WidgetData_Entry_Widget 实例。这样做的一个优势是 Qt 会为您管理选项卡切换。

如果您不想要标签,还有一个 QStackedWidget ,它只允许您以编程方式在一组小部件之间切换。

关于c++ - QtT 如何在 QMainWindow 中更改中央小部件时保存数据/状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366314/

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