如何在Qt Creator 5.7中制作一个只有一个窗口的c++ GUI程序,但每次点击都会使窗口有其他元素-如设置向导



我大约两周前开始用Qt 5.7制作GUI应用程序。

直到今天我已经做了一个21点游戏,一个基本的迷你加密程序和1-2个更多的程序。现在,我可以找到任何帮助,如何使一个应用程序,实际上就像一个设置向导-我的意思是,例如,通过点击下一步,一个标签或任何元素都消失了,新的出现像一个进度条,并在复制的内容下面。这到底是怎么做到的呢?

是像 on_pushButton_clicked() 这样的东西,然后像ui->pushButton->hide();和其他元素一样隐藏起来,或者它实际上是通过用其他元素和功能"重建"窗口而制作的?

编辑:Mike的评论揭示了QWizardQWizardPage的存在,这使得我的回答相当多余,除非你有超过这些小部件能力的需求-或者只是想自己实现所有东西- OP已经回复说他们确实想尝试。对于其他人,你可能只需要在你需要或想要的时候继续读下去!

一种方法是,在每个页面之后销毁窗口的旧内容(子部件),然后在下一个页面中重新填充它。

但在我看来,这并不理想:这是一种浪费,它将要求你反复破坏/重建事物,并伴随着所有需要的跳跃,以支持后退/下一步/跳转到页面#按钮以及不同页面之间的所有路径。这就需要更多的编程和更多的资源来保持不必要的拆除和重建。

你关于隐藏的另一个想法更好,我知道这个工作的确切容器!有了这个,你可以提前构建一切,而不需要反复删除/添加子节点来更改页面(就像你使用QGridLayout一样)。

  • 给你的窗口一个单独的子容器类 QStackedWidget 。此容器接受多个子部件,但每次只显示一个。所以:
  • 为向导的每个页面添加子容器。
  • 用该页所需的小部件填充每个子页面。
  • 将每个页面中的按钮等连接到信号以执行所需的操作…
  • …特别是你的后退/下一步(和跳跃,或其他)按钮。设置这些,以便它们通过使用插槽setCurrentIndex()来更改QStackedWidget的活动子节点。

通过这种方式,您可以在显示窗口之前构建所有页面的整个堆栈。然后,当你准备好了,你就把它展示出来,一切都准备好了。你的信号,所有正确连接,将照顾其他一切:页面之间的变化,验证输入,显示标签或打开对话框警告丢失的信息,等等。

相关内容

  • 没有找到相关文章

最新更新