本文主要是介绍31、wxWidgets小部件之wxListCtrl,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目前做的是一个简单的示例,以后用到了再深入研究。敬请谅解
#include <wx/wx.h>
#include <wx/listctrl.h>
class Simple:public wxFrame
{
public:
Simple(const wxString& title);
protected:
};
Simple::Simple(const wxString& title)
:wxFrame(NULL,-1,title)
{
wxImage::AddHandler(new wxPNGHandler);
wxImageList* ilListCtrl = new wxImageList(16,16);
ilListCtrl->Add(wxBitmap("add.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("edit.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("del.png",wxBITMAP_TYPE_PNG));
ilListCtrl->Add(wxBitmap("save.png",wxBITMAP_TYPE_PNG));
wxListCtrl* lcData = new wxListCtrl(this,-1,wxPoint(-1,-1),wxSize(-1,-1)
,wxLC_HRULES|wxLC_REPORT|wxLC_VRULES);
lcData->SetImageList(ilListCtrl,wxIMAGE_LIST_SMALL);//设置图标列表
wxListItem colID;
colID.SetId(0);//必须设置
colID.SetText(wxT("ID"));
colID.SetWidth(100);//列宽
colID.SetAlign(wxLIST_FORMAT_CENTER);
lcData->InsertColumn(0,colID);
wxListItem colName;
colName.SetId(1);
colName.SetText(wxT("名称"));
colName.SetAlign(wxLIST_FORMAT_CENTER);
colName.SetData(1);
lcData->InsertColumn(1,colName);
long index;
index = lcData->InsertItem(colID);
lcData->SetItem(index,1,wxT("名称1"),0);//此处设置的名称的图标
lcData->SetItemImage(index,1);//此处设置的行首图标
index = lcData->InsertItem(colName);
lcData->SetItem(index,1,wxT("名称2"),3);
lcData->SetItemImage(index,2);
Centre();
}
以下摘自官方文档
样式
此类支持以下样式:
- wxLC_LIST : 多列列表视图,带有可选的小图标。列是自动计算的,即您没有像 in 那样设置列
wxLC_REPORT
。换句话说,与 wxListBox不同,列表会自动换 行。 - wxLC_REPORT : 单列或多列报告视图,带有可选标题。
- wxLC_VIRTUAL : 该应用程序按需提供项目文本。只能与
wxLC_REPORT
. - wxLC_ICON : 大图标视图,带有可选标签。
- wxLC_SMALL_ICON : 小图标视图,带有可选标签。
- wxLC_ALIGN_TOP : 图标与顶部对齐。Win32 默认,仅 Win32。
- wxLC_ALIGN_LEFT : 图标向左对齐。
- wxLC_AUTOARRANGE : 图标自行排列。仅限 Win32。
- wxLC_EDIT_LABELS : 标签是可编辑的:编辑开始时将通知应用程序。
- wxLC_NO_HEADER : 报告模式下没有标题。
- wxLC_SINGLE_SEL : 单选(默认为多选)。
- wxLC_SORT_ASCENDING : 按升序排序。(您仍然必须在 wxListCtrl::SortItems 中提供一个比较回调。)
- wxLC_SORT_DESCENDING : 按降序排序。(您仍然必须在 wxListCtrl::SortItems 中提供一个比较回调。)
- wxLC_HRULES : 在报告模式下在行之间绘制浅色水平线。
- wxLC_VRULES : 在报告模式下在列之间绘制浅色垂直规则。
此类发出的事件
以下事件处理程序宏将事件重定向到成员函数处理程序“ func ”,其原型如下:
此类发出的事件的事件宏:
- EVT_LIST_BEGIN_DRAG(id, func) : 用鼠标左键开始拖动。处理
wxEVT_LIST_BEGIN_DRAG
事件类型。 - EVT_LIST_BEGIN_RDRAG(id, func) : 用鼠标右键开始拖动。处理
wxEVT_LIST_BEGIN_RDRAG
事件类型。 - EVT_BEGIN_LABEL_EDIT(id, func) : 开始编辑标签。这可以通过调用 Veto() 来防止。处理
wxEVT_LIST_BEGIN_LABEL_EDIT
事件类型。 - EVT_LIST_END_LABEL_EDIT(id, func) : 完成编辑标签。这可以通过调用 Veto() 来防止。处理
wxEVT_LIST_END_LABEL_EDIT
事件类型。 - EVT_LIST_DELETE_ITEM(id, func) : 删除了一个项目。处理
wxEVT_LIST_DELETE_ITEM
事件类型。 - EVT_LIST_DELETE_ALL_ITEMS(id, func) : 所有项目都被删除。处理
wxEVT_LIST_DELETE_ALL_ITEMS
事件类型。 - EVT_LIST_ITEM_SELECTED(id, func) : 该项目已被选中。处理
wxEVT_LIST_ITEM_SELECTED
事件类型。 - EVT_LIST_ITEM_DESELECTED(id, func) : 该项目已被取消选择。处理
wxEVT_LIST_ITEM_DESELECTED
事件类型。 - EVT_LIST_ITEM_ACTIVATED(id, func) : 该项目已被激活(ENTER 或双击)。处理
wxEVT_LIST_ITEM_ACTIVATED
事件类型。 - EVT_LIST_ITEM_FOCUSED(id, func) : 当前聚焦的项目已更改。处理
wxEVT_LIST_ITEM_FOCUSED
事件类型。 - EVT_LIST_ITEM_MIDDLE_CLICK(id, func) : 鼠标中键已在项目上单击。这仅受通用控件支持。处理
wxEVT_LIST_ITEM_MIDDLE_CLICK
事件类型。 - EVT_LIST_ITEM_RIGHT_CLICK(id, func) : 鼠标右键被点击在一个项目上。处理
wxEVT_LIST_ITEM_RIGHT_CLICK
事件类型。 - EVT_LIST_KEY_DOWN(id, func) : 一个键被按下。处理
wxEVT_LIST_KEY_DOWN
事件类型。 - EVT_LIST_INSERT_ITEM(id, func) : 已插入项目。处理
wxEVT_LIST_INSERT_ITEM
事件类型。 - EVT_LIST_COL_CLICK(id, func) : 已左键单击列 (m_col)。处理
wxEVT_LIST_COL_CLICK
事件类型。 - EVT_LIST_COL_RIGHT_CLICK(id, func) : 已右键单击列 (m_col)。处理
wxEVT_LIST_COL_RIGHT_CLICK
事件类型。 - EVT_LIST_COL_BEGIN_DRAG(id, func) : 用户开始调整列大小 - 可以被否决。处理
wxEVT_LIST_COL_BEGIN_DRAG
事件类型。 - EVT_LIST_COL_DRAGGING(id, func) : 正在拖动列之间的分隔线。处理
wxEVT_LIST_COL_DRAGGING
事件类型。 - EVT_LIST_COL_END_DRAG(id, func) : 用户调整了列的大小。处理
wxEVT_LIST_COL_END_DRAG
事件类型。 - EVT_LIST_CACHE_HINT(id, func) : 为虚拟列表控件准备缓存。处理
wxEVT_LIST_CACHE_HINT
事件类型。
这篇关于31、wxWidgets小部件之wxListCtrl的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!