如何识别具有某种ID的窗口小部件(框架)?

时间:2016-03-30 21:09:49

标签: c++ qt

我正在尝试为一组帧上的每个帧设置一个ID,以便用数据库信息填充它们并跟踪哪个帧与哪个数据库信息相关联。以下是框架集的外观:

frame

对于每个帧,我需要的是能够识别它们。例如,我们可以认为每个框架代表朋友列表中的朋友,如果我点击一个框架并按下删除按钮,我想先删除框架但当然删除了与数据库相关的信息,所以删除这个朋友从我的列表中,这就是为什么我需要在框架上有一个ID。 (将来,删除按钮将放在框架本身上,因此通过单击它我将能够获得父窗口小部件)。

此外,每个帧将包含多个QLabel s(上图中的“一个”,“两个”,“三个”,“四个”),我也需要能够识别它们,因为它们将代表可以像框架一样删除的数据库信息。但一次只有一个问题。

我首先考虑隐藏一个包含朋友ID的标签,但这似乎是一个坏主意。

然后我考虑使用列表并将帧与ID相关联,但是当点击框架时,我将如何能够恢复他在列表中的位置?它们在列表中的位置与窗口上的位置相同,但是我需要在窗口中获取它们的位置,我不知道该怎么做。

我希望我足够清楚。感谢。

1 个答案:

答案 0 :(得分:0)

由于QWidgetQObject,您可以为它们指定唯一名称(QObject::setName),或为其分配任意QVariant值属性,a-la JavaScript({{1} })。这应该允许您轻松跟踪哪些数据库字段映射到哪个小部件。将自定义类型支持添加到QObject::setProperty很容易,请参阅文档。

或者,对于动态属性,您可以在QVariant和描述连接所需的任何数据结构之间建立映射。

如果您通过QWidget*使用数据源,那么您还可以使用QDataWidgetMapper将模型的数据绑定到小部件。

您还可以轻松地将模型中的数据绑定到QML中的项目。