31、wxWidgets小部件之wxListCtrl

2024-01-27 17:58
文章标签 31 部件 wxwidgets wxlistctrl

本文主要是介绍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 ”,其原型如下:

void handlerFuncName( wxListEvent & event)

此类发出的事件的事件宏:

  • 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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651047

相关文章

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

尝试用java spring boot+VUE3实现前后端分离部署(8/31)

前言         这几天开学了,公司这边几个和学校对接的项目都挺忙的,然后我又开始有点闲的情况了。问大佬能不能继续看看若依的项目,大佬让我自己去学了。在看若依的项目的时候在想,python的FLASK后端实现和JAVA spring boot的实现差别大不大,两者实现的思路估计大差不差,那具体的代码逻辑和代码实现又有多大差别,java面向对象的编程思想又是怎么体现的。这些想法迫使我将原来使用

[C/C++入门][进制原理]31、求分数序列和

题目来自于信息学奥赛 1078 分析: 这道题看起来比较复杂,实际上只需要通过两个公式,一次性求出分母和分子,然后把这个求出来的数加入到变量和中。甚至都不需要知道总共游哪些数。数组都用不上。循环就能解决。 #include <iostream>#include <iomanip> // 用于格式化输出using namespace std;int main() {double s

“弹性盒子”一维布局系统(补充)——WEB开发系列31

弹性盒子是一种一维布局方法,用于根据行或列排列元素。元素可以扩展以填补多余的空间,或者缩小以适应较小的空间,为容器中的子元素提供灵活的且一致的布局方式。 一、什么是弹性盒子? CSS 弹性盒子(Flexible Box Layout,简称 Flexbox)是 CSS3 中引入的一种布局模式,提供一种有效的方式来布局、对齐和分配容器内空间,特别是在动态和复杂的应用界面中。 1、

Linux入门攻坚——31、rpc概念及nfs和samba

NFS:Network File System     传统意义上,文件系统在内核中实现 RPC:函数调用(远程主机上的函数),Remote Procedure Call protocol     一部分功能由本地程序完成     另一部分功能由远程主机上的 NFS本质上是一种RPC的实现。 本地用户进程要使用文件系统,通过系统调用,由内核完成文件系统的操作,而NFS只不过是系统内核又通过RP

LeetCode 31 Next Permutation

题意: 给出一串数字,求该排列的下一个排列。如果该排列为字典序最大排列,则输出字典序最小排列。 思路: 首先C++里面有求下一个排列的函数next_permutation,该函数返回0即表示当前排列字典序最大。 如果要自己动手实现,那么就考虑“如何找到比当前排列大1的排列”。 假设排列A(aaaXddd)比排列B(aaaYfff)大1,a部分为两排列相同部分,X与Y表示最靠左边不同

使用wxWidgets中的wxXmlDocument来对一个xml文件操作

如何操作一个XML,使用wxWidgets ? 可以使用一下方法: wxXmlDocument doc;wxString str_filename =file;if(false == doc.Load(str_filename)){return;}wxXmlNode* root = doc.GetRoot();wxXmlNode* child_root = root->GetChildr

使用wxWidgets如何获得所有的字体

如果想使用wxWidgets获得字体列表:可以使用以下方法 wxFontEnumerator myFonts;wxArrayString strFontNames;wxFontEncoding encoding = wxFONTENCODING_DEFAULT;//wxFONTENCODING_SYSTEM;strFontNames = myFonts.GetFacenames(enco

如何使用wxWidgets跨平台界面库来编写一个对话框窗口?

如题: 这是一个窗口类,调用方法是: ++++++ wxString fontname = new_tab_->GetFontName(); //wxT("System");DlgFontName *dlg_fontname = new DlgFontName(this,fontname);if (dlg_fontname->ShowModal() == wxID_OK){fontn

<Rust>egui学习之小部件(九):如何在窗口中添加下拉列表combobox部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第九篇博文,主要讲述下拉列表部件combobox的使用。 事实上,类似于iced,egui都提供了示例程序,本专栏的博文都是建立在官方示