更改娜娜列表框中的值

Change value in nana listbox

本文关键字:列表 娜娜      更新时间:2023-10-16

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

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

我编写的代码(下面(编译并运行。初始名称/值对显示正常,但尝试更改第一项的值一无所获。

我已经查看了几个列表框示例,但是在初始化后找不到更改列表框中值的简单方法

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();
}

也尝试过(不编译(

lb.at(listbox::index_pair(0,1)).value({"A","32"});

和(运行,没有效果(

lb.anyobj(0, 0, "32");

您正在使用非常低级的函数。有更方便的高级函数来设置/更改列表框中的值/文本/项(使用 STL 容器或解析程序(。

假设你想使用这些低级函数,因为你想实现你自己的高级API,这里有一些事实:

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

编辑:一个相对简单易懂的解释:3种方法将数据插入列表框