c++ - GTkmm 3.0 如何在框架或窗口之间切换

标签 c++ user-interface gtk gtkmm

我对 C++ 相当陌生,我对 Java 中的 MCV 编程有一些经验。我在 C++ 上使用 GTKmm 我想做的是编写一个应用程序,供助教提交和编辑各种职位的申请,并让管理员查看并接受这些申请。

我一开始想做的是创建 3 个“框架”(目前我正在为学生提交申请)

  • 首先有 2 个按钮 1 用于选择您是否是学生/管理员

  • 点击“你是学生”后,我想隐藏此框架并显示我的第二个框架

  • 第二个框架将有另外 2 个按钮,一个用于创建应用程序,另一个用于编辑应用程序

我的核心问题是我不明白如何在框架之间切换,我已经为我的模型编写了所有代码,并且理解我想要它做的所有事情,但我似乎找不到如何做到这一点。 ..

我唯一的想法是为每个窗口创建窗口,使它们看起来都很好,然后当按下按钮时关闭该窗口并将字符串写入文件,我可以访问以查看哪个按钮已被按下按下,然后相应地打开一个新窗口。我应该这样做还是有更好的方法?

最佳答案

我认为我可以为任何版本 >= GTK+ 3.10 提出更好/更惯用的选项 - 公平地说,它是在接受的答案大约半年后到达的。

如果您想一次在小部件之间切换,而不需要选项卡等任何附件,那么 Gtk::Stack 似乎是更好的选择。因为它专门适合一次一个演示,没有笔记本手动选项卡功能带来的任何冗余和(理论上的)开销,您只需立即禁用即可!它是一个具有多个子级的容器,其中一个在任何给定时刻都可见,当然还有更改事件子级的方法。

您可以连接自己的小部件和/或事件来管理显示 Stack 的子级。或者 - 尽管在本例中可能只是恢复冗余 - 有一个 StackSwitcher 配套小部件,它几乎是一个垂直选项卡栏,如 GTK+ 演示和 GNOME 调整工具中所示。

关于c++ - GTkmm 3.0 如何在框架或窗口之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793704/

相关文章:

c++ - 我的程序泄漏了 boost::shared_ptr 拥有的资源

c++ - 将参数传递给 boost::thread 中的函数

多种对象类型的 JavaFX TreeView? (和更多)

Java 警告 - JList 是原始类型,引用必须参数化

c++11 - 如何在 Gtk::DrawingArea 区域绘制一条新线,同时保留之前已经绘制的线?

c++ - 如何在数字上处理 log(0)?

c++ - 将数据的平均值插入 vector

python - 尝试将输入到条目小部件中的文本存储到变量中

c - 使用 GTK+ 时输出文件显示地址而不是值

python - 如何使用 gtk3 在 python 中创建类似列表的 gui?