30、wxWidgets小部件之wxListBox

2024-01-27 17:58
文章标签 30 部件 wxwidgets wxlistbox

本文主要是介绍30、wxWidgets小部件之wxListBox,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

还可以参考

1.wxListCtrl https://docs.wxwidgets.org/3.0/classwx_list_ctrl.html

2.wxDataViewCtrl https://docs.wxwidgets.org/3.0/classwx_data_view_ctrl.html

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif // WX_PRECOMP

#include <wx/listbox.h>
#include "mypanel.h"

class Simple:public wxFrame
{
public:
    Simple(const wxString& title);
    wxListBox* listbox;

protected:
    void OnDblClick(wxCommandEvent& event);

    MyPanel* btnPanel;

};

Simple::Simple(const wxString& title)
    :wxFrame(NULL,-1,title)
{
    wxPanel* panel = new wxPanel(this,-1);

    listbox = new wxListBox(panel,-1,wxPoint(-1,-1),wxSize(-1,-1));
//                            ,0
//                            ,NULL
//                            ,wxLB_MULTIPLE|wxLB_SORT);


    btnPanel=new MyPanel(panel);


    wxBoxSizer* szMain = new wxBoxSizer(wxHORIZONTAL);
    szMain->Add(listbox,1,wxEXPAND|wxALL,20);
    szMain->Add(btnPanel,0,wxEXPAND|wxRIGHT,20);

    Bind(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED,Simple::OnDblClick,this);

    panel->SetSizer(szMain);

    Centre();
}

void Simple::OnDblClick(wxCommandEvent& event)
{
    wxString text,renamed;

    int sel = listbox->GetSelection();
    if (sel != -1) {
        text = listbox->GetString(sel);
        renamed = wxGetTextFromUser(wxT("新项目名称"),
                                    wxT("重全名"), text);
    }

    if (!renamed.IsEmpty())
    {
        listbox->Delete(sel);
        listbox->Insert(renamed, sel);
    }
}
 

#include <wx/wx.h>
#include <wx/listbox.h>
#include "simple.h"

class MyPanel:public wxPanel
{
public:
    MyPanel(wxPanel* parent);

protected:
    void btnNew_Click(wxCommandEvent& event);
    void btnRename_Click(wxCommandEvent& event);
    void btnClear_Click(wxCommandEvent& event);
    void btnDel_Click(wxCommandEvent& event);

    wxListBox* m_lbData;

    wxButton* btnNew;
    wxButton* btnRename;
    wxButton* btnClear;
    wxButton* btnDel;

};

MyPanel::MyPanel(wxPanel* parent)
    :wxPanel(parent,wxID_ANY)
{

    wxBoxSizer* vbox = new wxBoxSizer(wxVERTICAL);

    Simple* simple = (Simple*)parent->GetParent();
    m_lbData = simple->listbox;

    btnNew=new wxButton(this,-1,"New");
    btnDel=new wxButton(this,-1,"Del");
    btnRename=new wxButton(this,-1,"Rename");
    btnClear=new wxButton(this,-1,"Clear");

    vbox->Add(-1,20);
    vbox->Add(btnNew,0,wxTOP,5);
    vbox->Add(btnRename,0,wxTOP,5);
    vbox->Add(btnDel,0,wxTOP,5);
    vbox->Add(btnClear,0,wxTOP,5);

    Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyPanel::btnNew_Click,this,btnNew->GetId());
    Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyPanel::btnRename_Click,this,btnRename->GetId());
    Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyPanel::btnDel_Click,this,btnDel->GetId());
    Bind(wxEVT_COMMAND_BUTTON_CLICKED,MyPanel::btnClear_Click,this,btnClear->GetId());

    m_lbData->Append(wxT("测试1"));
    m_lbData->Append(wxT("测试2"));
    m_lbData->Append(wxT("测试3"));
    m_lbData->Append(wxT("测试4"));
    m_lbData->Append(wxT("测试5"));
    m_lbData->Append(wxT("测试6"));

    SetSizer(vbox);

}

void MyPanel::btnNew_Click(wxCommandEvent& event)
{
    wxString str = wxGetTextFromUser(wxT("项目名称"),wxT("增加新项"));
    if(str.length()>0){
        m_lbData->Append(str);
    }
}

void MyPanel::btnDel_Click(wxCommandEvent& event)
{
    int sel = m_lbData->GetSelection();
    if(sel != -1) m_lbData->Delete(sel);

}

void MyPanel::btnClear_Click(wxCommandEvent& event)
{
    m_lbData->Clear();
}


void MyPanel::btnRename_Click(wxCommandEvent& event)
{
    wxString text,renamed;

    int sel = m_lbData->GetSelection();
    if (sel != -1) {
        text = m_lbData->GetString(sel);
        renamed = wxGetTextFromUser(wxT("新项目名称"),
                                    wxT("重全名"), text);
    }

    if (!renamed.IsEmpty())
    {
        m_lbData->Delete(sel);
        m_lbData->Insert(renamed, sel);
    }
}

这篇关于30、wxWidgets小部件之wxListBox的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

c++习题30-求10000以内N的阶乘

目录 一,题目  二,思路 三,代码    一,题目  描述 求10000以内n的阶乘。 输入描述 只有一行输入,整数n(0≤n≤10000)。 输出描述 一行,即n!的值。 用例输入 1  4 用例输出 1  24   二,思路 n    n!           0    1 1    1*1=1 2    1*2=2 3    2*3=6 4

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」�

JobScheduler 调用导致的运行时长30分钟的功耗问题

一、SDK 的使用情况与功耗影响 案例是否导致功耗变大onStartJob return true 且子线程没有调用jobFinished()告知系统功耗变大,最长带来30分钟的partial wakelock 长持锁onStartJob return true 且子线程调用jobFinished()告知系统功耗有影响,主要线程执行时长,标准是30秒内onStartJob return fals

嵌入式面试经典30问:一

什么是嵌入式系统? 嵌入式系统是指嵌入到某个对象体系中的专用计算机系统,它负责执行特定的任务,具有专用性、隐蔽性、资源受限和可靠性要求高等特点。通常包括硬件和软件两部分,硬件以微处理器为核心,软件则负责控制和管理硬件资源,实现特定的应用功能。 嵌入式系统和普通计算机系统有什么区别? 嵌入式系统与普通计算机系统的主要区别在于目的、资源、性能和成本等方面。嵌入式系统通常针对特定应用设计,具有体积小

【IEEE出版】2024博鳌新型电力系统国际论坛——电力系统与新能源技术创新论坛(NPSIF 2024,10月30-11月1)

2024博鳌新型电力系统国际论坛——电力系统与新能源技术创新论坛将于2024年10月30-11月1日于海南博鳌举办。 会议的历史悠久,致力于促进电力系统领域的研究和开发活动,同时也着眼于促进全球各地研究人员、开发人员、工程师、学生和从业人员之间的科学信息交流,推动新能源技术的创新和应用,为全球能源领域的可持续发展贡献力量。期待着各方专家学者的共同参与和卓越贡献,共同开创电力系统未来的新篇章。

涉密电脑插U盘会不会被发现?如何禁止涉密电脑插U盘?30秒读懂!

在涉密电脑插U盘的那一瞬间,你是否也好奇会不会被发现?涉密电脑的安全监控可是滴水不漏的!想知道如何彻底禁止涉密电脑插U盘?简单几招搞定,轻松锁死外部设备,信息安全无懈可击! 涉密电脑插U盘会不会被发现? 涉密电脑是否会在插入U盘时被发现,需要根据具体情况来判断。在一些情况下,涉密电脑可能没有安装任何监控软件或安全工具,插入U盘可能不会立即触发警告。然而,随着信息安全管理的不断升级,越来越多

【anaconda 环境搭建】环境搭建python快速30分钟

1、下载anaconda https://repo.anaconda.com/archive/index.html 选择下载 Anaconda3-2019.10-Linux-x86_64.sh 2、安装linux 工具4个,上传,下载,解压,打包 yum install zip yum install unzip yum install lrzsz Yum install wget 3、r