gpt4 book ai didi

c++ - 关于如何使用 Qt 模型 View 类的建议

转载 作者:太空狗 更新时间:2023-10-29 21:28:59 25 4
gpt4 key购买 nike

所以我一直在用 C++ 编写数独游戏。我已经完成并测试了大部分游戏逻辑,但我想在它之上使用 Qt 作为 GUI。我试图找出使用 Qt 类来满足我的需要的最佳方式。

作为测试,我使用了 QAbstractTableModel。我将它子类化并让它访问我现有的数据模型和我现有的 Controller 。现在我正在使用 QTableView 来获得数独板的基本渲染和基本的“编辑”(您可以更改任何值)。它看起来与我想要的完全不同,但功能应有尽有(或可以添加)。

我想制作一个数据模型和 Controller ,以便在不依赖框架的情况下使用 C++ 对其进行全部修改。然后我只想让 Qt 坐在上面。所以我有这个工作,这里是这些东西如何在高层次上交流的快速“图表”

QTableView?
^
|
v
PuzzleModel : QAbstractTableModel
^ |
| |_____________
| v
Real data model classes <------------ Controllers

我的问题是,我该如何修改 QTableView 或我应该创建自己的 View 或 QWidget 以便以我想要的方式显示数据?

理想情况下,我想显示一个固定大小的表格(没有标题,没有调整大小),并且不允许多选。有一些关于如何呈现各种字体样式/颜色的自定义,但我认为我可以很容易地处理它。我还想将每个单元格呈现为数字,或者像这样的“标记”:

*-------------*         *-------------*
| 1 2 3 | | ****** |
| 4 6 | | * |
| 8 9 | | * |
*-------------* *-------------*

很明显我不能继续使用开箱即用的 QTableView。我是否创建自己的 QStyledItemDelegate 并仍然使用 QTableView?我需要创建一个完整的 Widget 吗?如果我创建

只是从了解各种 Qt 类的功能的人那里寻求一些建议/指导。

最佳答案

你有两个选择:

  1. 继续使用 QTableView 和您的 QAbstractTableModel,并子类化 QStyledItemDelegate 以准确呈现单元格你想要他们怎么样。不过,您不能以这种方式更改单元间绘画。

    但是请注意,您可以通过对更多 Qt::ItemDataRole 使用react来实现很多您想要的(字体、颜色)来自模型的 data() 实现。

  2. 编写自定义小部件并使用自定义数据提供程序界面。让我强调一下:当您实现自己的 SudokuWidget 时,不要继续使用 QAbstractTableModel。这种方式对每个人来说都简单得多(QAbstractItemModel 对于项目 View 的情况来说既过于抽象又过于特化,无法用作通用数据提供程序接口(interface))。

我的建议是使用 (2)。 Interview被高估了。

关于c++ - 关于如何使用 Qt 模型 View 类的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com