一个干净和直观的方式来实现一个列表的可点击字符串调用函数



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

我特别寻找的是一个小部件的选择,它为以下任务提供了一个干净直观的界面:

  • 用户滚动执行计算的函数列表(在我的情况下,从glm)。

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

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

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

有什么推荐的方法吗?总的来说,我是Qt的新手,因此我的知识相当有限。

视图在您的案例中并不重要。您需要创建/重用一个经过调整的模型。这个模型必须包含视图显示的内容和您想要启动的操作之间的关系。

例如,如果你的命令是像bash命令一样的文本,你可以创建一个视图,显示"list files", "Copy files"和一个包含数据的模型("list files" = 'ls -l'), (" Copy files" = 'ls -l'),等等。

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

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

参见QAbstractItemModel::data()和QAbstractItemModel::setData(),了解更多信息

最新更新