【问题标题】:Complex UI with MVC使用 MVC 的复杂 UI
【发布时间】:2015-01-11 15:28:02
【问题描述】:

我正在尝试重新创建我制作但使用 MVC 设计模式的文本编辑器;我不完全确定它的某些部分。

例如,我有一个显示我的项目目录的树视图和一个显示文件内容的文本编辑器,此外,我还有一个正在显示的文件的编译输出以及一个选项卡式界面。

这会被分成几个不同的模型还是一个大模型?如果它低于 1 个大型模型,我将如何使用 Qt 模型类来做这样的事情?

【问题讨论】:

  • 这个问题可能也很适合programmers.stackexchange

标签: qt user-interface model-view-controller pyqt


【解决方案1】:

打开 Qt Designer 并拖放所有你需要的东西。它应该能让你走得很远。

我认为您应该担心的唯一模型/视图是 QFileSystemModel 并将其与 QTreeView 配对。其他一切 Qt 都有一些很好的例子来展示如何做到这一点。

如果您在单独的选项卡中同时显示多个文件,那么您可能需要查看选项卡式浏览器示例以了解其完成方式。

http://doc.qt.io/qt-5/examples-mainwindow.html

http://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html

http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html

http://doc.qt.io/qt-5/qtwebkitexamples-webkitwidgets-browser-example.html

我喜欢 QDockWidgets 并使用 QActions 并将它们放在 QToolbarQMainWindow 中。

http://doc.qt.io/qt-5/model-view-programming.html

http://doc.qt.io/qt-5/qfilesystemmodel.html#details

http://doc.qt.io/qt-5/qmdiarea.html#details

http://doc.qt.io/qt-5/qtextedit.html

对于编译部分,您只需要创建一个QProcess 并将其输出连接到QTextEdit

希望对您有所帮助。

【讨论】:

  • 我理解那部分,但我是否仍会为某种模型设置一个单独的类来保存 UI 的数据并执行处理,以及为什么 Qt 省略了控制器方面MVC 并且只使用模型/视图?
  • Qt 建议使用称为委托的专用控制器,这有助于模块化对各个元素的访问。我已经在几个项目中使用了它,而且这个组织很有意义。查看所有示例的代码确实展示了为什么它是一个好的设计模式。当在不同类型的视图中表示数据并使用单个项目执行常见任务时,它非常一致。它确实很强大,但确实有它的学习曲线。
猜你喜欢
  • 2013-05-29
  • 2020-11-15
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多