[wxWidgets]_[中级]_[常用的wxGrid的总结]
来源:互联网 发布:如何取消网络桥接 编辑:程序博客网 时间:2024/05/16 19:03
场景:
1. wxGrid是比较好用的可定制的table,支持单元格显示效果定制,合并,隐藏,局部刷新等等。总体来说,还是比较实用的控件。
总结:
1. 初始化
grid->CreateGrid(0, 0);grid->EnableGridLines(true);grid->SetRowLabelSize(32);grid->SetDefaultRowSize(140);grid->SetScrollLineX(1);wxFont font(9, wxFONTFAMILY_SWISS, wxNORMAL, wxNORMAL, false, wxT("Arial"),wxFONTENCODING_ISO8859_1);grid->SetLabelFont(font);grid->SetSelectionMode(wxGrid::wxGridSelectCells);grid->HideCellEditControl();grid->SetEditable(true);grid->SetCellHighlightPenWidth(0);grid->EnableDragGridSize(false);grid->SetUseNativeColLabels(true);AddTitle(grid, wxT("."), 112, true);AddTitle(grid, wxT("."), 112, true);AddTitle(grid, wxT("."), 112, true);AddTitle(grid, wxT("."), 112, true);AddTitle(grid, wxT("."), 112, true);grid->SetColLabelSize(0);wxColor color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);grid->SetSelectionBackground(color);
2.添加行
grid_->InsertRows(position, 1, false);DhPhotoCheckCellRender* render = new DhPhotoCheckCellRender();render->SetShowText(array[0]);render->CenterCheckOffset();grid_->SetReadOnly(position, 0, true);grid_->SetCellRenderer(position, 0, render);grid_->SetCellValue(position, 0, wxT(" "));
3.设置单元格渲染
class DhPhotoCheckCellRender: public wxGridCellRenderer
4.使用render和editor,wxGrid使用这两个比较特殊,它在内部维护一个对render和editor的引用计数.在每次GetRender和GetEidtor返回前会InCRef,所以每次返回后需要DecRef.
DhPhotoCheckCellRender* render =(DhPhotoCheckCellRender*) current_show_grid_->GetCellRenderer(i, j);render->DecRef();
注意,这里如果减的次数过多就会崩溃。看chm文档有描述.
5.wxGrid对动态增加列貌似支持不好,我Del 全部列再新增列就会崩溃,可能是bug吧,这个问题已经找到原因,是del全部后insert行就会触发一个wxEVT_GRID_SELECT_CELL事件,很奇怪,之后这个事件触发函数调用了一个没创建的自定义render就会崩溃.
grid_->DeleteAllRows();grid_->HideOtherCols(5);
备注(wx3.0.0): 快速DeleteRows并且InsertRows经常会崩溃,临时解决方案是先AppendRows到末尾,之后再删除前面的.
6.绑定常用的事件
grid->Connect(wxEVT_GRID_SELECT_CELL,wxGridEventHandler(DhRecoveryKindWindow::OnCellLeftClick), NULL,this);
7.设置列宽和表头
SetColLabelValue(index, label);SetColSize(index, width);
8.添加表头
AddTitle
int col_num = grid->GetNumberCols();grid->AppendCols();if (is_show){grid->ShowCol(col_num);grid->SetColLabelValue(col_num, grid_title);grid->SetColSize(col_num, grid_width);grid->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);}else{grid->HideCol(col_num);}
0 0
- [wxWidgets]_[中级]_[常用的wxGrid的总结]
- [wxWidgets]_[初级]_[监听wxListCtrl和wxGrid的滚动条事件]
- [wxWidgets]_[中级]_[阻止窗口闪烁的方法]
- [wxWidgets]_[中级]_[移动窗口]
- [wxWidgets]_[中级]_[使用wxRendererNative画的原生图片生成带alpha透明区域的wxBitmap]
- [Windows]_[中级]_[崩溃报告的中级解决方案]
- [wxWidgets]_[初级]_[常见更新进度条的方案]
- [Object c]_[初级]_[NSString常用方法的总结]
- 常用的正则表达式_总结
- wxGrid的用法
- [wxWidgets]_[中级]_[合并图片-平铺图片-使用小图绘制大图]
- [wxWidgets]_[中级]_[自定义wxStaticText控件支持图片背景(透明背景)]
- wxWidgets之wxGrid控件
- java中级_写自己的JDBC框架
- [wxWidgets]_[初级]_[发送异步事件的注意项之字符串深浅复制]
- [wxWidgets]_[初级]_[简单应用看wx的核心原理]
- [wxWidgets]_[初级]_[不以界面程序的方式使用wx库]
- [wxWidgets]_[初级]_[自绘窗口最小化点击任务栏图标还原的办法]
- ArcGIS三维建模(三)
- LeetCode | Insertion Sort List
- Who’s using a database link?(找出谁在使用dblink)
- Hakan factor
- 返回键的监听
- [wxWidgets]_[中级]_[常用的wxGrid的总结]
- android APK 反编译方法
- Silverlight页面无法更新
- linux shell bash 内置变量参考
- 队列的数组实现
- WCF解析jason返回的小实例
- OCP-1Z0-053-V13.02-624题
- 梦想不是一成不变的
- Java导出Excel表