一种干净直观的方法来实现可点击字符串列表来调用函数?

时间:2013-02-28 06:13:08

标签: qt opengl user-interface event-handling

对于我正在编写的Qt App,我想要一个可点击的功能列表,点击这些功能后,用户可以提供所需的输入参数。

我特别想要的是一系列小工具,为以下任务提供干净直观的界面:

  • 用户滚动执行计算的函数列表(在我的例子中,来自glm)。

  • 找到某个功能后,用户点击该项目;弹出窗口打开,指定所需的输入参数(例如vec3vec4等)。

这里的想法是函数本身已经存在:它们只需要一个接口,简而言之,它提供一个伪解释器来处理并将结果输出到GLWidget,它将通过发送它来更新相应传递的数据。相应的着色器。

我查看了QListView及其Widget变体,但它似乎更适合文件系统数据,例如图像或文本文件,但我不太确定。到目前为止,它似乎是唯一可以被视为在这种情况下实际可用的东西。

有推荐的方法吗?我对Qt一般都很新,因此我的知识非常有限。

1 个答案:

答案 0 :(得分:1)

在您的情况下,视图并不重要。您需要创建/重用适应的模型。 此模型必须包含视图显示内容与您要启动的操作之间的关系。

例如,如果命令是bash命令之类的文本,则可以创建一个显示“列表文件”,“复制文件”的视图和包含数据的模型(“list files”='ls -l') ,(“copy files”='ls -l')等等。

您可以在具有不同角色的同一项目中存储不同的数据(使用QVariant):Qt :: DisplayRole对应于视图显示的数据,Qt :: UserRole对应您想要的数据。

因此,如果您只需要存储与名称关联的命令行,则可以使用Qt :: UserRole将名称存储在具有Qt :: DisplayRole的项目中,并将命令行存储为QString(或其他)。

有关详细信息,请参阅QAbstractItemModel :: data()和QAbstractItemModel :: setData()。