• wxWidgets之wxGrid控件


    1. 介绍

        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();
    }     
  • 相关阅读:
    postgresql客户端连接错误的解决方法【转】
    在游戏开发中使用管理类的目的和作用
    Unity3D对象池
    yield的作用
    Unity延迟和重复调用方法
    Unity的Asset Store商店下载文件路径
    C#委托和事件详解
    C#一个关于委托和事件通俗易懂的例子
    C#委托和事件定义和使用
    C#委托和事件
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6790031.html
Copyright © 2020-2023  润新知