wxWidgets之wxGrid控件
1. 介绍
3. 演示样例代码
在此我们实现一个4*5的表格,其核心代码例如以下所看到的:
wxGrid控件时wxWidgets界面库中内置的网格控件。
通经常使用来显示表格数据。该控件拥有强大的功能。开发人员可依据自己的需求对其进行定制。
2. 经常使用API构造函数: wxGrid () wxGrid (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxWANTS_CHARS, const wxString &name=wxGridNameStr) 创建表格的API: // 创建一个空的表格 bool Create (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxWANTS_CHARS, const wxString &name=wxGridNameStr) // 创建一个指定行,制定列的表格 bool CreateGrid (int numRows, int numCols, wxGridSelectionModes selmode=wxGridSelectCells) 关于大小的API: // 获取列标签的高度 int GetColLabelSize () const // 获取指定列的宽度 int GetColSize (int col) const // 获取默认的列标签宽度 int GetDefaultColLabelSize () const // 获取默认的列宽 int GetDefaultColSize () const // 获取默认的行标签宽度 int GetDefaultRowLabelSize () const // 获取默认的行高度 int GetDefaultRowSize () const // 获取行标签的宽度 int GetRowLabelSize () const // 获取指定行的高度 int GetRowSize (int row) const // 设置指定列的宽度 void SetColSize (int col, int width) // 设置列标签的高度 void SetColLabelSize (int height) // 设置默认的列宽度 void SetDefaultColSize (int width, bool resizeExistingCols=false) // 设置默认的行高度 void SetDefaultRowSize (int height, bool resizeExistingRows=false) // 设置行标签的宽度 void SetRowLabelSize (int width) // 设置指定行的高度 void SetRowSize (int row, int height) // 获取列的大小信息 wxGridSizesInfo GetColSizes () const // 获取行的大小信息 wxGridSizesInfo GetRowSizes () const // 设置列的大小信息 void SetColSizes (const wxGridSizesInfo &sizeInfo) // 设置行的大小信息 void SetRowSizes (const wxGridSizesInfo &sizeInfo) // 设置指定单元格的大小 void SetCellSize (int row, int col, int num_rows, int num_cols) // 获取指定单元格的大小 CellSpan GetCellSize (int row, int col, int *num_rows, int *num_cols) const // 获取单元格的大小 wxSize GetCellSize (const wxGridCellCoords &coords) // 推断制定列大小是否可变 bool CanDragColSize (int col) const // 推断表格大小是否可变 bool CanDragGridSize () const // 推断制定行大小是否可变 bool CanDragRowSize (int row) const // 使指定列大小不能改变 void DisableColResize (int col) // 使指定行大小不能改变 void DisableRowResize (int row) // 使列大小不能改变 void DisableDragColSize () // 使表格大小不能改变 void DisableDragGridSize () // 使行大小不能改变 void DisableDragRowSize () void EnableDragColSize (bool enable=true) // 设置表格大小是否可变 void EnableDragGridSize (bool enable=true) // 设置行大小是否可变 void EnableDragRowSize (bool enable=true) // 获取列数 int GetNumberCols () const // 获取行数 int GetNumberRows () const 关于边框的API: // 获取指定列的画笔 virtual wxPen GetColGridLinePen (int col) // 获取默认的表格边框的画笔 virtual wxPen GetDefaultGridLinePen () // 获取表格边框的颜色 wxColour GetGridLineColour () const // 获取行边框的画笔 virtual wxPen GetRowGridLinePen (int row) // 表格是否有边框 bool GridLinesEnabled () const // 设置表格边框的颜色 void SetGridLineColour (const wxColour &colour) 关于表头的API: // 获取指定列标签(表头)的对其方式 void GetColLabelAlignment (int *horiz, int *vert) const // 获取指定列标签(表头)的文件的方向 int GetColLabelTextOrientation () const // 获取制定列标签的内容 wxString GetColLabelValue (int col) const // 获取标签(表头)的背景颜色 wxColour GetLabelBackgroundColour () const // 获取标签的字体 wxFont GetLabelFont () const // 获取标签的文字颜色 wxColour GetLabelTextColour () const // 获取行标签的对齐方式 void GetRowLabelAlignment (int *horiz, int *vert) const // 获取行标签的内容 wxString GetRowLabelValue (int row) const // 隐藏标签 void HideColLabels () // 隐藏行标签 void HideRowLabels () // 设置列标签的对齐方式 void SetColLabelAlignment (int horiz, int vert) // 设置列标签的文字方向 void SetColLabelTextOrientation (int textOrientation) // 设置列标签的内容 void SetColLabelValue (int col, const wxString &value) // 设置标签的背景颜色 void SetLabelBackgroundColour (const wxColour &colour) // 设置标签的字体 void SetLabelFont (const wxFont &font) // 设置标签的文字颜色 void SetLabelTextColour (const wxColour &colour) // 设置行标签的对齐方式 void SetRowLabelAlignment (int horiz, int vert) // 设置行标签的内容 void SetRowLabelValue (int row, const wxString &value) 关于表结构的API: // 追加列 bool AppendCols (int numCols=1, bool updateLabels=true) // 追加行 bool AppendRows (int numRows=1, bool updateLabels=true) // 删除指定列 bool DeleteCols (int pos=0, int numCols=1, bool updateLabels=true) // 删除指定行 bool DeleteRows (int pos=0, int numRows=1, bool updateLabels=true) // 插入新列 bool InsertCols (int pos=0, int numCols=1, bool updateLabels=true) // 插入新行 bool InsertRows (int pos=0, int numRows=1, bool updateLabels=true) 关于选中的API: // 清楚选中状态 void ClearSelection () // 获取选中的单元格 wxGridCellCoordsArray GetSelectedCells () const // 获取选中的列 wxArrayInt GetSelectedCols () const // 获取选中的行 wxArrayInt GetSelectedRows () const // 获取选中区域的背景颜色 wxColour GetSelectionBackground () const // 获取选中区域的前景色 wxColour GetSelectionForeground () const // 获取选中模式 wxGridSelectionModes GetSelectionMode () const // 推断制定单元格是否被选中 bool IsInSelection (int row, int col) const // 推断是否有选中的单元格 bool IsSelection () const // 选择整个表格 void SelectAll () // 选择指定的区域 void SelectBlock (int topRow, int leftCol, int bottomRow, int rightCol, bool addToSelected=false) // 选择指定的区域 void SelectBlock (const wxGridCellCoords &topLeft, const wxGridCellCoords &bottomRight, bool addToSelected=false) // 选择制定的列 void SelectCol (int col, bool addToSelected=false) // 选择指定的行 void SelectRow (int row, bool addToSelected=false) // 设置选中后的背景颜色 void SetSelectionBackground (const wxColour &c) // 设置选中后的前景色 void SetSelectionForeground (const wxColour &c) // 设置选中模式 void SetSelectionMode (wxGridSelectionModes selmode) 关于格式的API: // 获取制定单元格的对其方式 void GetCellAlignment (int row, int col, int *horiz, int *vert) const // 获取制定单元格的背景颜色 wxColour GetCellBackgroundColour (int row, int col) const // 获取制定单元格的字体 wxFont GetCellFont (int row, int col) const // 获取制定单元格的文字颜色 wxColour GetCellTextColour (int row, int col) const // 获取指定单元格默认的对齐方式 void GetDefaultCellAlignment (int *horiz, int *vert) const // 获取单元格默认的背景色 wxColour GetDefaultCellBackgroundColour () const // 获取单元格默认的字体 wxFont GetDefaultCellFont () const // 获取单元格默认的字体颜色 wxColour GetDefaultCellTextColour () const // 设置指定单元格的对齐方式 void SetCellAlignment (int row, int col, int horiz, int vert) // 设置指定单元格的对齐方式 void SetCellAlignment (int align, int row, int col) // 设置单元格的背景颜色 void SetCellBackgroundColour (int row, int col, const wxColour &colour) // 设置单元格的字体 void SetCellFont (int row, int col, const wxFont &font) // 设置单元格的字体颜色 void SetCellTextColour (int row, int col, const wxColour &colour) // 设置单元格的字体颜色 void SetCellTextColour (const wxColour &val, int row, int col) // 设置单元格字体颜色 void SetCellTextColour (const wxColour &colour) // 设置单元格默认的对齐方式 void SetDefaultCellAlignment (int horiz, int vert) // 设置单元格默认的背景颜色 void SetDefaultCellBackgroundColour (const wxColour &colour) // 设置单元格默认的字体 void SetDefaultCellFont (const wxFont &font) // 设置单元格默认的字体颜色 void SetDefaultCellTextColour (const wxColour &colour) // 使单元格处于仅仅读状态 void DisableCellEditControl () // 设置单元格的编辑状态(可编辑或不可编辑) void EnableCellEditControl (bool enable=true) // 设置表格的编辑状态(可编辑或步可编辑) void EnableEditing (bool edit) // 获取指定单元格的值 wxString GetCellValue (int row, int col) const // 获取制定单元格的值 wxString GetCellValue (const wxGridCellCoords &coords) const // 当前单元格是否为仅仅读 bool IsCurrentCellReadOnly () const // 表格是否为可编辑的 bool IsEditable () const // 指定单元格是否为仅仅读 bool IsReadOnly (int row, int col) const // 设置指定单元格的值 void SetCellValue (int row, int col, const wxString &s) // 设置制定单元格的值 void SetCellValue (const wxGridCellCoords &coords, const wxString &s) // 设置制定单元格的值 void SetCellValue (const wxString &val, int row, int col) // 设置制定单元格的仅仅读属性 void SetReadOnly (int row, int col, bool isReadOnly=true) // 单元格大小自适应 void AutoSize () // 指定列标签大小自适应 void AutoSizeColLabelSize (int col) // 指定列大小自适应 void AutoSizeColumn (int col, bool setAsMin=true) // 设置列的大小自适应属性 void AutoSizeColumns (bool setAsMin=true) // 指定行大小自适应 void AutoSizeRow (int row, bool setAsMin=true) // 指定行标签大小自适应 void AutoSizeRowLabelSize (int col) // 设置行的大小自适应属性 void AutoSizeRows (bool setAsMin=true) // 推断指定列是否是显示的 bool IsColShown (int col) const // 推断制定行是否是显示状态 bool IsRowShown (int row) const // 设置制定列的最小宽度 void SetColMinimalWidth (int col, int width) // 隐藏制定列 void HideCol (int col) // 显示指定列 void ShowCol (int col) // 设置行的最小高度 void SetRowMinimalHeight (int row, int height) // 隐藏指定行 void HideRow (int col) // 显示指定行 void ShowRow (int col) // 推断单元格大小是否可变 bool CanDragCell () const // 设置单元格大小是否可变 void EnableDragCell (bool enable=true) 关于属性的API: // 刷新属性 void RefreshAttr (int row, int col) // 设置指定列的属性 void SetColAttr (int col, wxGridCellAttr *attr) // 设置表格外边距 void SetMargins (int extraWidth, int extraHeight) // 设置指定行属性 void SetRowAttr (int row, wxGridCellAttr *attr) // 获取单元格属性 wxGridCellAttr * GetOrCreateCellAttr (int row, int col) const // 获取列数 int GetNumberCols () const // 获取行数 int GetNumberRows () const 关于排序的API: // 推断排序规则是否为ASCII码 bool IsSortOrderAscending () const // 设置排序列 void SetSortingColumn (int col, bool ascending=true) // 设置列的排序规则 void SetColumnsOrder (const wxArrayInt &order) // 获取列的最小宽度 int GetColMinimalWidth (int col) const // 获取行的最小高度 int GetRowMinimalHeight (int col) const 选中模式: wxGridSelectCells wxGridSelectRows wxGridSelectColumns wxGridSelectRowsOrColumns 对齐方式: wxALIGN_LEFT wxALIGN_TOP wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER_VERTICAL wxALIGN_CENTRE_VERTICAL wxALIGN_CENTER wxALIGN_CENTRE具体解释的API介绍见:http://docs.wxwidgets.org/trunk/classwx_grid.html
3. 演示样例代码
在此我们实现一个4*5的表格,其核心代码例如以下所看到的:
void CreateTable(wxWindow* parent) { char* attr[] = {"姓名", "年龄", "性别", "身高", "体重"}; wxGrid *grid = new wxGrid(parent, wxID_ANY, wxPoint(0, 0), wxSize(580, 310)); // 创建一个8×5的表格 grid->CreateGrid(8, 5); // 设置默认的行高度 grid->SetDefaultRowSize(35); // 设置默认的列宽度 grid->SetDefaultColSize(100); // 设置表头的背景色 grid->SetLabelBackgroundColour(0x228B22); // 设置表头的颜色 grid->SetLabelTextColour(0xFFFFFF); // 设置单元格中数据的对其方式 grid->SetDefaultCellAlignment(wxALIGN_CENTER, wxALIGN_CENTRE); // 设置表头 for (int i = 0; i < 5; i++) { grid->SetColLabelValue(i, wxString::FromUTF8(attr[i])); } // 使表格全然显示 parent->Fit(); }