Listbox支持内嵌控件是Nana 1.1中引入的新功能。Listbox提供了一个接口类inline_notifier_interface,用于定义一套内嵌控件的行为,并与指定category的某个column相关联。
下面的例子将演示创建内嵌控件的方法。
using namespace nana;
//创建一个textbox和一个button
//textbox显示某个listbox项中的文本值
//button用于删除本项
class inline_widget : public listbox::inline_notifier_interface
{
private:
//创建内嵌控件。listbox会调用该方法创建内嵌控件
//这里不必处理控件的位置和大小。
virtual void create(window wd) override
{
//创建文本框
txt_.create(wd);
txt_.events().click([this]
{
//当点击文本框时,选中本项
indicator_->selected(pos_);
});
txt_.events().mouse_move([this]
{
//当鼠标在文本框上移动时,需要高亮本项
indicator_->hovered(pos_);
});
txt_.events().key_char([this](const arg_keyboard& arg)
{
if (arg.key == keyboard::enter)
{
//在文本框里按下回车,则修改本项的值
arg.ignore =