首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改nana列表框中的值

更改nana列表框中的值
EN

Stack Overflow用户
提问于 2017-07-08 03:47:42
回答 1查看 500关注 0票数 1

我正在尝试创建一个带有属性网格(名称:值对的网格)的GUI

listbox小部件似乎是开始的方式。(如果有更好的东西,请纠正我)

我编写的代码(如下)编译并运行。初始的名称/值对显示得很好,但是尝试更改第一项的值没有任何结果。

我看过几个列表框示例,但在初始化后找不到一种简单的方法来更改列表框中的值

代码语言:javascript
复制
int main()
{
using namespace nana;

// form to hold everything
form fm;

// listbox to be the property grid
listbox lb(fm, nana::rectangle(10, 10, 280, 120));

// column headers
lb.append_header("Name", 200);
lb.append_header("Value", 200);

// add two items to the default category
lb.at(0).append({"A", "0"});
lb.at(0).append({"B", "0"});

// change value of A item to 32 ( fails to do anything )
lb.at(listbox::index_pair(0,1)).value("32");

fm.show();
exec();
}

也尝试过(不编译)

代码语言:javascript
复制
lb.at(listbox::index_pair(0,1)).value({"A","32"});

and (运行,不起作用)

代码语言:javascript
复制
lb.anyobj(0, 0, "32");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 19:13:53

您正在使用非常低级的函数。可以(使用STL containersresolvers)在列表框中设置/更改值/文本/项的more convenient higth level functions

假设您想要使用这些低级函数,因为您想实现自己高级API,下面是一些事实:

您使用at(index_pair)访问的item_proxyvalue函数将允许您访问以前附加到该项目的某些对象。您尚未附加任何对象。您可以首先有效地附加对象,也可以继续直接处理文本。最简单的"hack“是使用函数text:lb.at(listbox::index_pair(0,1)).text(1,"32"),该函数设置该项的第1列的文本。

编辑:相对简单易懂的解释:3-methods-to-insert-data-into-listbox

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44978618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档