`
hgfghwq27
  • 浏览: 42883 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类

自定义列表框,可以调整高度。

 
阅读更多

    自定义列表框,可以调整高度。 收藏
  我是用的自定义列表控件实现的。继承了CAknSingleStyleListBox。
  //------------------------------------------------ ----头文件------------------------------------------------
  #ifndef __CMySingleStyleListBox__
  #define __CMySingleStyleListBox__
  #include 
  #include 
  class CControl;
  class CFbsBitmap;
  class CMaxIcon;    //是我自定义的图片类。
  class CMySingleStyleListBox : public CAknSingleStyleListBox
  {
  public:
  CMySingleStyleListBox(CControl * aControl);
  virtual ~CMySingleStyleListBox();
  protected:
  virtual void CreateItemDrawerL();
  CControl * iControl;
  RArray iSelectRecordID; //在列表中显示的记录ID
  CMaxIcon * iBack; //背景颜色
  CMaxIcon * iSelectedBack; //选中的背景
  };
  class CMyColumnListBoxItemDrawer : public CColumnListBoxItemDrawer
  {
  public:
  CMyColumnListBoxItemDrawer(MTextListBoxModel* aTextListBoxModel,
  const CFont* aFont, CColumnListBoxData* aColumnData,
  CEikListBox* aListBox, CControl * aControl, CMaxIcon * aBack,
  CMaxIcon * aSelBack);
  virtual ~CMyColumnListBoxItemDrawer();
  virtual void DrawActualItem(TInt aItemIndex, const TRect& aActualItemRect,
  TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool,
  TBool aItemIsSelected) const;
  void SetFindBox(CAknSearchField* aFindBox);
  CAknSearchField* iFindBox;
  CEikListBox* iOwner;
  CControl * iControl;
  RArray iSelectRecordID; //在列表中显示的记录ID
  MAknsSkinInstance* skin;
  //图片
  CMaxIcon * iBack; //背景颜色
  CMaxIcon * iSelectedBack; //选中的背景
  };
  #endif 
  //------------------------------------------------ ----定义文件------------------------------------------------
  #include  
  #include 
  //
  #include "manager/Control.h"
  #include "manager/Helper.h"
  #include "manager/MaxIcon.h"
  #include "control/MySingleStyleListBox.h"
  ////////////////////////////////////////////////// ////////////////////
  // Construction/Destruction
  ////////////////////////////////////////////////// ////////////////////
  #define MEM_FREE(a) if(a){delete a; a=NULL;}
  CMySingleStyleListBox::CMySingleStyleListBox(CCont rol * aControl)
  {
  iControl = aControl;
  iBack = NULL;
  iSelectedBack = NULL;
  }
  void CMySingleStyleListBox::CreateItemDrawerL()
  {
  CColumnListBoxData* columnData = CColumnListBoxData::NewL();
  EnableDragEvents();
  const CFont* myFont;
  myFont = CEikonEnv::Static()->DenseFont();
  CEikListBox *aListBox = this;
  //加载图片
  CMaxIconManager* pIconMgr = iControl->iIconManager;
  //背景
  iBack = pIconMgr->GetMaxIcon(CMaxIconManager::EListBack);
  iSelectedBack = pIconMgr->GetMaxIcon(CMaxIconManager::EListCur);
  iItemDrawer = new (ELeave) CMyColumnListBoxItemDrawer(Model(), myFont,
  columnData, aListBox, iControl, iBack, iSelectedBack);
  //iItemDrawer->SetItemCellSize(TPoint(100,100));
  //iItemDrawer->SetItemCellSize(TSize(360,100));
  iItemDrawer->SetItemCellSize(TSize(360 , 100));
  //View()->SetItemHeight(100) ;
  }
  CMySingleStyleListBox::~CMySingleStyleListBox()
  {
  }
  // MySingleStyleListBox.cpp: implementation of the CMyColumnListBoxItemDrawer class.
  //
  ////////////////////////////////////////////////// ////////////////////
  CMyColumnListBoxItemDrawer::CMyColumnListBoxItemDr awer(
  MTextListBoxModel* aTextListBoxModel, const CFont* aFont,
  CColumnListBoxData* aColumnData, CEikListBox* aListBox,
  CControl * aControl, CMaxIcon * aBack, CMaxIcon * aSelBack) :
  CColumnListBoxItemDrawer(aTextListBoxModel, aFont, aColumnData), iOwner(
  aListBox)
  {
  iControl = aControl;
  iBack = aBack;
  iSelectedBack = aSelBack;
  //SetItemCellSize(TSize(360, 150));
  }
  void CMyColumnListBoxItemDrawer::DrawActualItem(TInt aItemIndex,
  const TRect& aActualItemRect, TBool aItemIsCurrent,
  TBool aViewIsEmphasized, TBool, TBool aItemIsSelected) const
  {
  //需要修改   高亮
  /*
  MAknsSkinInstance* skin = AknsUtils::SkinInstance();
  MAknsControlContext* cc = AknsDrawUtils::ControlContext(iOwner);
  if (skin && cc)
  {
  AknsDrawUtils::Background(skin, cc, iOwner, *iGc, aActualItemRect);
  }
  */
  TRect aRect = aActualItemRect;
  aRect.iBr.iX += 30;
  TRgb rSelected(TRgb(228, 100, 41)); //选中的颜色
  TRgb rUnSelected(TRgb(255, 255, 255)); //没有选中的颜色
  TRect outer_rect(aRect);
  outer_rect.Shrink(2, 2);
  TRect inner_rect(outer_rect);
  inner_rect.Shrink(3, 3);
  /*
  //画背景图片
  NHelper::DrawMaxIcon(*iGc, aActualItemRect, iBack);
  */
  /*
  if (aItemIsCurrent)
  {
  NHelper::DrawMaxIcon(*iGc, aActualItemRect, iSelectedBack);
  }
  else
  {
  NHelper::DrawMaxIcon(*iGc, aActualItemRect, iBack);
  }
  */
  if (aItemIsCurrent)
  {
  //NHelper::DrawMaxIcon(*iGc, aActualItemRect, iSelectedBack);
  iGc->DrawBitmap(aRect, iSelectedBack->m_pBitmap);
  }
  else
  {
  //NHelper::DrawMaxIcon(*iGc, aActualItemRect, iBack);
  iGc->DrawBitmap(aRect, iBack->m_pBitmap);
  }
  //初始黑色
  const CFont* font = CEikonEnv::Static()->NormalFont();
  iGc->UseFont(font);
  iGc->SetPenStyle(CGraphicsContext::ESolidPen);
  iGc->SetPenColor(iHighlightedTextColor);
  TPtrC itemText = iModel->ItemText(aItemIndex);
  TInt baseline = (aRect.Height() - font->HeightInPixels()) / 2
  + font->AscentInPixels();
  //计算每段字符串长度
  TInt highlightwidth = font->TextWidthInPixels(itemText);
  TRect highlighted = aRect;
  highlighted.SetWidth(highlightwidth);
  //画每段字符串iTextColor
  iGc->SetPenColor(rUnSelected);
  iGc->SetPenStyle(CGraphicsContext::ESolidPen);
  iGc->DrawText(itemText, highlighted, baseline);
  //释放字体
  iGc->DiscardFont();
  }
  CMyColumnListBoxItemDrawer::~CMyColumnListBoxItemD rawer()
  {
  }
  //------------------------------------------------ ----注意事项------------------------------------------------
  我终于找到解决的办法了。办法如下:
  1.在创建列表元素的时候设置一下大小
  iListShopBox->View()->SetItemHeight(100);
  2.在CreateItemDrawerL()中添加
  iItemDrawer->SetItemCellSize(TSize(360 , 100));
  就OK了……
分享到:
评论

相关推荐

    QComboBox 下拉列表,文字右对齐,自定义下拉列表

    自定义了QComboBox,将下拉框的原有左对齐的文字改为右对齐,包括下拉列表的文字,增大了下拉列表的高度,调整下拉列表的宽度的自适应。下拉框的下拉列表改成了仿手机的滑动操作方式,此为工程源码,Qt5亲测可用。

    洋芋田图像工具箱3.5一个专为摄影师设计的图像工具箱.rar

     支持一级标题、二级标题、文本、粗体、斜体、、有序列表、无序列表、图片和段落引用,支持自定义每一类富文本内容的字体、字体大小、字体颜色、行距、外边距、对齐方式等各项内容,也支持全文背景和页面边距的...

    大更新【CHENI纯组件列表框1.6】修复重大BUG,新增绑定整数型数组-易语言

    6、调整:列表_返回顶部 的参数从速度修改为耗时 更直观的表现速度【默认为1(小数型 单位秒)】 tip:通过简单计算当前表项数量和一个常量值可得到固定速度噢~ 例如:0.1 × 图文列表框_多列.获取_表项数量 () ÷ ...

    大更新【CHENI纯组件列表框1.5】修复部分BUG,新增绑定数据功能-易语言

    1、调整:列表_绑定纵向滚动条的第二参数可接收空参 默认为列表载体的初始高度 2、定义私有数据类型:posAndSize 用于记录组件的坐标和大小 同时衍生 一系列Get和set方法(私有方法 | 将用于后期自适应组件的判断、...

    Excel VBA实用技巧大全 附书源码

    04147设置单元格区域的除对角框线以外的全部边框 04148删除单元格区域的全部边框 04149设置单元格的颜色和背景 04150设置单元格的格式 04151设置单元格的对齐方式 04152缩小单元格内容以全部显示 04153设定、删除...

    Android项目ListView 中的item随意拖动.rar

    这个功能为应用程序提供了高度的交互性和可定制性,使得用户可以根据自己的需求和喜好来重新排列列表。 该ListView组件基于Android的Drag-and-Drop框架构建,充分利用了Android平台提供的原生拖放支持。通过简单的...

    论文排版助手[Word版]

    有了该程序的帮助,当您需要插入交叉引用时,您不必再打开“交叉引用”对话框去繁琐地选择组合框和列表框中的项目,您只需通过一个按钮来完成操作。 【参考文献】 可通过“列出段落”和“尾注”两种方式一键编辑...

    论文排版助手[WPS版]

    有了该程序的帮助,当您需要插入交叉引用时,您不必再打开“交叉引用”对话框去繁琐地选择组合框和列表框中的项目,您只需通过一个按钮来完成操作。 【参考文献】 可通过“列出段落”和“尾注”两种方式一键编辑...

    基于react-window 库编写的一个超灵活的表格源码+项目说明.zip

    - 表格行高,表头行高,都支持自定义高度 - 文字布局,支持设置,左对齐和居中对齐 - 支持表头行的样式自定义 - 支持表格行的样式自定义,使用函数渲染,返回参数:行索引。 - 表头列的顺序支持拖拽变更,支持开关该...

    MAPGIS地质制图工具

    B、对于属性筛选图元:在筛选图元对话框中①列表框中选择图元类型——当前点/线/区文件,再点确定;弹出表达式输入对话框②然后在字段名称下面选中一个属性字段作为筛选属性;③接着点击操作符区的运算符按钮,并且...

    浩辰CAD8 v13.1 正式版.zip

    比如用户如果想分别按1:100、1:50和1:20打印同一张图纸,只需要调整空间的注释比例,文字和标注箭头大小就会自动调整,保证最终不同比例打印的文字高度和标注的大小是一致的,如下图所示。 在布局空间中如果要设置...

    AutoPlay_Menu_Builder6.0.1328注册版

     工具提示当移动鼠标到动作控件上方时,可以弹出一条工具提示,并且可以使用漂亮的自定义风格替换系统默认的工具提示风格。  使用自定义工具提示使用自定义风格的工具提示,不选定则使用系统默认的工具提示风格。 ...

    AutoPlay_Menu_Builder5.5.0.1328注册版

     工具提示当移动鼠标到动作控件上方时,可以弹出一条工具提示,并且可以使用漂亮的自定义风格替换系统默认的工具提示风格。  使用自定义工具提示使用自定义风格的工具提示,不选定则使用系统默认的工具提示风格。 ...

    超实用的jQuery代码段

    10.17 在列表框上添加自定义按钮 10.18 为列表添加自定义的缩略图图标 10.19 创建列表日历的效果 10.20 动态创建listview列表项 10.21 动态加载和切换页面 10.22 在页面切换时显示加载进度框 10.23 在屏幕旋转时更改...

    fireworks入门

    在标题栏右边的下拉列表中可以设置窗口只显示一半的高度和关闭该窗口。 5.2.4浮动面板 Fireworks的浮动面板共有14个,分别为“信息、层、混色器、颜色样本、样式、URL、库、形状、帧、历史记录、行为、查找、优化...

    淘客帝国破解版

    9、增加自定义页面,可以在根目录下生成自定义静态页。 10、增加网站地图,sitemap.php页面。 11、增加404错误页面。 V4.2更新内容: 1、后台增加自定义伪静态栏目。如果需要自定义伪静态,请确认网站服务器支持根...

    易语言程序免安装版下载

    2) 修改静态编译后“选择列表框”在“单选”属性为真时不显示项目内容的BUG 3) 修改核心库中“播放音乐”命令在没有声卡或声卡被禁用时未正确释放资源的BUG 4) 修改静态编译后“读配置项”命令在第三个参数“配置...

    total commander

    - 高度的可配置性:可自定义工具栏和菜单等资源; - 支持键盘快捷键:可通过快捷键调用大多数功能; - 支持多国语言及 Unicode:消除语言文字的鸿沟; - 支持长文件名:文件名长度最多可达 1022 字符; - 支持...

    淘客帝国v5.12完美破解版

    9、增加自定义页面,可以在根目录下生成自定义静态页。 10、增加网站地图,sitemap.php页面。 11、增加404错误页面。 V4.2更新内容: 1、后台增加自定义伪静态栏目。如果需要自定义伪静态,请确认网站服务器支持根...

Global site tag (gtag.js) - Google Analytics