更改娜娜列表框中的值
Change value in nana listbox
我正在尝试创建一个带有 属性 网格(name:value 对网格)的 GUI
列表框小部件似乎是开始的方式。 (如果有更好的,请指正)
我编写的代码(如下)编译运行。最初的 name/value 对显示正常,但尝试更改第一项的值没有任何效果。
我查看了几个列表框示例,但找不到在初始化后更改列表框值的简单方法
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");
您正在使用非常低级的功能。有more convenient higth level functions to set/change the values/text/items in the listbox (using STL containers or resolvers)。
假设您想使用这些低级函数是因为您想实现自己的高级功能API,这里有一些事实:
您使用 at
(index_pair) 访问的 item_proxy
的 value
函数将使您能够访问您之前附加到该项目的某些对象。您还没有附加任何对象。您可以有效地首先附加一个对象,或者您可以继续直接使用文本。最简单的 "hack" 是使用函数文本:lb.at(listbox::index_pair(0,1)).text(1,"32")
,它设置该项目第 1 列的文本。
编辑:一个相对简单易懂的解释:3-methods-to-insert-data-into-listbox
我正在尝试创建一个带有 属性 网格(name:value 对网格)的 GUI
列表框小部件似乎是开始的方式。 (如果有更好的,请指正)
我编写的代码(如下)编译运行。最初的 name/value 对显示正常,但尝试更改第一项的值没有任何效果。
我查看了几个列表框示例,但找不到在初始化后更改列表框值的简单方法
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");
您正在使用非常低级的功能。有more convenient higth level functions to set/change the values/text/items in the listbox (using STL containers or resolvers)。
假设您想使用这些低级函数是因为您想实现自己的高级功能API,这里有一些事实:
您使用 at
(index_pair) 访问的 item_proxy
的 value
函数将使您能够访问您之前附加到该项目的某些对象。您还没有附加任何对象。您可以有效地首先附加一个对象,或者您可以继续直接使用文本。最简单的 "hack" 是使用函数文本:lb.at(listbox::index_pair(0,1)).text(1,"32")
,它设置该项目第 1 列的文本。
编辑:一个相对简单易懂的解释:3-methods-to-insert-data-into-listbox