你好,来自SO!
今天我一直在质疑自己试图实施的内容。
谈到这一点,我正在尝试使用Qt的某种终端代码,它将用于显示来自应用程序不同部分的消息。
现在我实现了一个模型类(派生自QAbstractTableModel
),它代表了这些消息行的QList
,并打算将它们映射到终端窗口中的小部件(DataWidgetMapper
被考虑 )。
然后它打了我,如果我的应用程序的不同部分试图同时添加新消息怎么办?
它甚至可能发生吗?
是否实施BeginInsertRow
与保护这些东西的安全有关?
长话短说我很困惑。我自己找不到太多的情报。所以我开始怀疑我是否以正确的方式做到这一点。
我在Qt世界中有点新人。
提前致谢:)
答案 0 :(得分:2)
由于您在QAbstractItemModel
之上实施自己的模型,因此确定它是否是线程安全的取决于您。您必须设计自己的内部数据模型,因此更改和访问模型中的数据的方法是您自己的。您可以完全控制其内容,以便添加所需的任何线程锁定机制,以确保不同的线程无法同时更新和访问数据。提供数据访问的所有QAbstractItemModel
方法最终都会调用派生方法。