【问题标题】:Can I have multiple QDialog boxes along with my MainWindow in my application?我的应用程序中可以有多个 QDialog 框和我的 MainWindow 吗?
【发布时间】:2020-06-25 21:05:35
【问题描述】:

我的 UI 中有一个QListwidget,其中的项目是食物之类的

  • 披萨
  • 土耳其美食
  • 意大利面
  • 蛋糕
  • ...

我有 22 件这样的物品

所以每当我双击每个项目时,我都会弹出一个单独的模态 QDialogbox 弹出窗口,其中显示了它的配方,QDialog 框也通过几行编辑来接受输入。

所以我的问题是拥有 22 个单独的 QDialogboxes 可以吗?这有什么缺点吗?或者我可以做一些更好的选择吗,因为对于每个对话框,我还有一个 .h 和 .cpp 文件。

【问题讨论】:

  • 及时构建这些对话框,以避免高内存使用(以防配方数量急剧增加)。

标签: c++ qt qlistwidget qdialog


【解决方案1】:

与其拥有 22 个不同的(但相同的,除了他们显示的文本之外)对话框类,您最好拥有一个对话框类,该类接受包含要显示的文本的参数。然后,您可以将您的配方保存在一个文件中(例如,作为编译时常量保存在 .cpp 文件中,或者保存在程序启动时从磁盘读取的 .txt 文件中)并实例化您的一个对话框类的对象必要时适当的文本。

【讨论】:

  • 感谢您的建议,但如果其中一些变化很大,例如某些对话框有多个 QComboboxes 和打开文件对话框的按钮,那么将它们分开是否有意义
  • 如果它们都不同,当然; OTOH,您可能可以将它们建模为一个包含所有组合框和按钮等的 Uber 对话框类的所有特殊情况,只是其中一些隐藏了一些额外的小部件/功能。在这种情况下,您可以将“标志”参数与文本一起传递,告诉对话框类要显示和隐藏哪些功能(例如 MyDialog = new MyDialog("Pizza", FLAG_COMBOBOX | FLAG_BUTTONS | FLAG_SOMETHINGELSE);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 2012-05-25
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多