0

对于我正在编写的 Qt 应用程序,我想要一个可单击函数的列表,当单击该函数时,将允许用户提供所需的输入参数。

我特别寻找的是一系列小部件,它们为以下任务提供干净直观的界面:

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

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

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

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

有推荐的方法吗?总的来说,我对 Qt 相当陌生,因此我的知识非常有限。

4

1 回答 1

1

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

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

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

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

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

于 2013-02-28T08:53:50.893 回答