Qt5 / PyQt5最佳做法[保留]

问题描述 投票:1回答:1

根据要求重写以澄清。

免责声明:

我是Qt编程的新手,到目前为止,我只编写了小复杂的应用程序,通常遵循紧紧提供的示例。

现在,我被要求为一个基于嵌入式Linux的现有产品(收银机,如果有关系的话)编写(重新)配置GUI,该Linux包含一组大型的,可能会扩展的“配置页面”。一些例子:

  • 软件更新;允许有选择地更新系统和/或应用程序。
  • 网络设置;允许进行有线和WiFi配置。
  • 内部数据库更新(产品,价格,...)
  • 维护:查看内部日志,内存清理等...
  • 导出:触发和配置每日/每月/每年的活动报告。

[我开始在Qt Designer中设计界面,但我很快意识到,如果我只是想制作一个以前版本的“更大版本”,我将获得大量意大利面条代码。

由此产生了原始的,非常笼统的问题:

在带有嵌套容器(QToolBox,QTabWidget等)的复杂接口中,对插槽进行分区的“批准方式”(如果有的话)是什么,以便在“ MainWindow”中不存在成千上万的插槽?]]

欢迎使用针对非平凡示例的“最佳做法”的指针。

状态:

我目前处于设计/原型制作阶段,我可以很轻松地进行更改;当然,以后的更改可能不太方便。

我目前的设计很标准:

  • 使用Qt Designer构建的整体式GUI界面,并使用顶级QToolBox小部件来选择要编辑的“页面”,并根据特定的配置需求定制各个页面
  • 使用标准范例导入pyqt5:
    class MWindow(QMainWindow):
        def __init__(self):
            super(MWindow, self).__init__()
            uic.loadUi('app.ui', self)

        ...

    app = QApplication(sys.argv)
    mw = MWindow()
    mw.show()
    sys.exit(app.exec_())
  • 有一个后端与目标设备对话并提供“命令”以实际执行所需的操作(我无法拥有适当的MVC,因为“ M”在其他位置,并且“ C”被分割了,部分在配置器上,部分在目标上)。
  • 我很快发现,如果我想进行正确的输入验证并且是“用户友好的”,我可以为每个“页面”处理数十个插槽(例如:从编辑的IP地址自动生成网络掩码/广播,更不用说了以太网配置和WiFi配置之间的充足代码重复)。目前尚不需要,但是我know

请求稍后会出现,我想提前计划。

问题:

在其他情况下,我会尝试使所有与UI相关的处理都更加本地化;例如:

  • 编写用于处理IP地址的类/页面
  • 将其归类以添加WiFi所需的内容。
  • 为目标上实际可用的每个连接构建一个带有选项卡的选项卡式小部件,根据需要实例化上述类之一。
  • 将选项卡式窗口小部件放入工具箱页面之一。
  • 冲洗并重复。
  • [OTOH一些现实生活中的例子(请参阅:Wireshark's MainWindow)似乎朝着相反的方向:“一个篮子里的所有东西”。

是否有任何经过合理合并的最佳做法建议来处理这种情况?

更重要的是:如果我坚持将代码拆分为一种“分而治之”的方法,那将如何转化为QtDesigner /代码关系? (我绝对不想求助于手工编码的GUI)。

根据要求重写以澄清。免责声明:我是Qt编程的一个相对较新手,到目前为止,我只编写了一些复杂性小的应用程序,通常遵循紧密提供的示例。 ...

qt oop pyqt
1个回答
0
投票

我想Qt提供的样本将决定最佳实践,因为大多数开发人员会从这些经验入手,并根据它们制定标准。

© www.soinside.com 2019 - 2024. All rights reserved.