新手关于SettingItem的问题

ziamhitler 2008-12-10 03:18:53
新建了一个SettingItemList的视图,往里面放了一个CAknEnumeratedTextPopupSettingItem控件,怎么去获得我选择了这个控件的哪一项呢?
它有个iSelectedIndex,但是是private的。
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw 2008-12-11
  • 打赏
  • 举报
回复
没说清楚吗?按你上面的代码,这样改造一下:把iSettings所属类成员改为public访问,然后直接使用其成员变量,即:
iSettings.EnumeratedTextPopup()
改为
iSettings.iSelectedItemIndex // 假定变量名称为iSelectedItemIndex

这样,iSettings.iSelectedItemIndex就含有所选的值。不清楚EnumeratedTextPopup()的实现方式,若该函数返回引用或许也行,自己测试一下。
doubleblue 2008-12-11
  • 打赏
  • 举报
回复

不知道你在哪个地方需要这个值,但我曾经自定义一个类CAknEnumeratedTextPopupSettingItem,在该类中使用:

MAknQueryValue* query = QueryValue();
TInt index = query->CurrentValueIndex();
index即为当前item选择的value值(与资源文件中定义的value值对应)

ziamhitler 2008-12-10
  • 打赏
  • 举报
回复
现在的问题是:我想获得刚才创建的那个item的iSelectedIndex
ziamhitler 2008-12-10
  • 打赏
  • 举报
回复
还是不知所云。。。可能我没把问题描述清楚
我的程序里面没有SettingForm类
我新建了一个空的UI designer的工程,然后往里面添加了一个SettingItemList的视图
自动生成的代码里面有个CMySettingItemList:public CAknSettingItemList
在该类的CreateSettingItemL(TInt aId)方法中有这样的代码:
switch(aId)
{
case EMySettingItemListViewEnumeratedTextPopup:
{
CAknEnumeratedTextPopupSettingItem* item = new (ELEAVE)
CAknEnumeratedTextPopupSettingItem(aId, iSettings.EnumeratedTextPopup());
}
}
iSettings 是自动生成的代码iSettings.EnumeratedTextPopup()返回的是默认设置的selectedIndex
dyw 2008-12-10
  • 打赏
  • 举报
回复
刚才说的"Form类",应为"SettingForm类",更准确些。
iSelectedItemIndex是外部传入的,在程序中引用iSelectedItemIndex就可以了。在用户改变选项时这个变量的值会自动做相应变化。

Forum Nokia网站有SettingList方面的例子,此外SDK好像也附带有例子。
ziamhitler 2008-12-10
  • 打赏
  • 举报
回复
不明白。。。。。
dyw 2008-12-10
  • 打赏
  • 举报
回复
iSelectedItemIndex是Form类的成员变量,当前选择的值就在该变量中。
ziamhitler 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dyw 的回复:]
CAknEnumeratedTextPopupSettingItem构造函数的第二个参数就是所选择的项。

case EMySettingItemEnumText:
settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem
(aIdentifier, iSelectedItemIndex);
break;
[/Quote]
但那是创建的时候啊,后面我要获得这个iSelectedIndex怎么获得呢?
dyw 2008-12-10
  • 打赏
  • 举报
回复
CAknEnumeratedTextPopupSettingItem构造函数的第二个参数就是所选择的项。

case EMySettingItemEnumText:
settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem
(aIdentifier, iSelectedItemIndex);
break;

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧