实现可点击字符串列表以调用函数的简洁直观的方法?
Posted
技术标签:
【中文标题】实现可点击字符串列表以调用函数的简洁直观的方法?【英文标题】:A clean and intuitive way to implement a list of clickable strings to invoke functions? 【发布时间】:2013-02-28 06:13:07 【问题描述】:对于我正在编写的 Qt 应用程序,我想要一个可点击函数的列表,当点击这些函数时,用户可以提供所需的输入参数。
我特别寻找的是一系列小部件,它们为以下任务提供干净直观的界面:
用户滚动浏览执行计算的函数列表(在我的例子中,来自glm
)。
一旦找到一个函数,用户点击该项目;将打开一个弹出窗口,其中指定所需的输入参数(例如,vec3
、vec4
等)。
这里的想法是函数本身已经存在:它们只需要一个接口,简而言之,它提供了一个伪解释器来处理它们的结果并将其输出到 GLWidget,GLWidget 将相应地更新传递的数据,并将其发送到对应的着色器。
我查看了QListView 及其 Widget 变体,但它似乎更适合文件系统数据,例如图像或文本文件,尽管我不太确定。到目前为止,它似乎是唯一可以被认为在这种情况下实际可用的东西。
有推荐的方法吗?总的来说,我对 Qt 还很陌生,因此我的知识非常有限。
【问题讨论】:
【参考方案1】:在您的情况下,视图并不重要。您需要创建/重用适应的模型。 该模型必须包含您的视图显示的内容与您要启动的操作之间的关系。
例如,如果您的命令是 bash 命令之类的文本,您可以创建一个显示“列表文件”、“复制文件”的视图和一个包含数据的模型(“列表文件”='ls -l') , ("copy files" = 'ls -l') 等
您可以将不同的数据(使用 QVariant)存储在具有不同角色的同一个项目中:Qt::DisplayRole 对应于视图显示的数据,Qt::UserRole 对应于您想要的。
因此,如果您只需要存储与名称相关联的命令行,则可以使用 Qt::DisplayRole 将名称存储在项目中,并使用 Qt::UserRole 将命令行作为 QString(或其他)存储。
有关详细信息,请参阅 QAbstractItemModel::data() 和 QAbstractItemModel::setData()。
【讨论】:
以上是关于实现可点击字符串列表以调用函数的简洁直观的方法?的主要内容,如果未能解决你的问题,请参考以下文章