C++ 如何在wxWidgets(C+;+;代码)中使用wxListCtrl向第二列添加值?

C++ 如何在wxWidgets(C+;+;代码)中使用wxListCtrl向第二列添加值?,c++,wxwidgets,C++,Wxwidgets,我有以下代码: int列的宽度=100 long indx1=alist->InsertColumn(0,L“用户名”,wxLIST\u格式\u左,列宽) long indx2=alist->InsertColumn(1,L“用户Id”,wxLIST\u格式\u左,列宽) long itemIndex1=alist->InsertItem(indx1,L“John Smith”,-1) alist->SetItem(indx1,1,L“jsmith”) 我希望在第一行看到两列,其中用户名和用户I

我有以下代码:

int列的宽度=100

long indx1=alist->InsertColumn(0,L“用户名”,wxLIST\u格式\u左,列宽)

long indx2=alist->InsertColumn(1,L“用户Id”,wxLIST\u格式\u左,列宽)

long itemIndex1=alist->InsertItem(indx1,L“John Smith”,-1)

alist->SetItem(indx1,1,L“jsmith”)

我希望在第一行看到两列,其中用户名和用户Id作为标题,“John Smith”和“jsmith”作为值。相反,我只在“用户名”列下看到“John Smith”,而在“用户ID”列下看不到任何内容。以下是显示结果的快照链接:


谢谢

这里是显示两列的最小示例。注意,我在SetItem方法中使用InsertItem方法返回的索引项

#include <wx/wx.h>

class Frame : public wxFrame
{
public:
  Frame():
    wxFrame(NULL, wxNewId(), _("App"))
  {
    wxBoxSizer * box = new wxBoxSizer(wxVERTICAL);

    wxListCtrl * listCtrl = new wxListCtrl(this, wxNewId(), wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
    listCtrl->InsertColumn(0, _("User Name"));
    listCtrl->InsertColumn(1, _("User ID"));

    long index = listCtrl->InsertItem(0, _("John Smith"));
    listCtrl->SetItem(index, 1, _("jsmith"));

    box->Add(listCtrl, 1, wxEXPAND, 0);
    SetSizer(box);
    box->SetSizeHints(this);
    Show(true);
  }
};

class App : public wxApp
{
  bool OnInit()
  {
    SetTopWindow(new Frame());
  }
};

IMPLEMENT_APP(App);
#包括
类框架:公共wxFrame
{
公众:
框架():
wxFrame(NULL,wxNewId(),xframe(“App”))
{
wxBoxSizer*box=新的wxBoxSizer(wxVERTICAL);
wxListCtrl*listCtrl=newwxlistctrl(这个,wxNewId(),wxDefaultPosition,wxDefaultSize,wxLC_报告);
listCtrl->InsertColumn(0,(“用户名”));
listCtrl->InsertColumn(1,(“用户ID”);
长索引=listCtrl->InsertItem(0,(“John Smith”);
listCtrl->SetItem(索引,1,u(“jsmith”);
框->添加(listCtrl,1,wxEXPAND,0);
固定器(盒);
框->设置大小输入(此);
显示(真实);
}
};
类应用程序:公共wxApp
{
bool OnInit()
{
SetTopWindow(新框架());
}
};
实施应用程序(APP);

这是一个显示两列的最小示例。注意,我在SetItem方法中使用InsertItem方法返回的索引项

#include <wx/wx.h>

class Frame : public wxFrame
{
public:
  Frame():
    wxFrame(NULL, wxNewId(), _("App"))
  {
    wxBoxSizer * box = new wxBoxSizer(wxVERTICAL);

    wxListCtrl * listCtrl = new wxListCtrl(this, wxNewId(), wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
    listCtrl->InsertColumn(0, _("User Name"));
    listCtrl->InsertColumn(1, _("User ID"));

    long index = listCtrl->InsertItem(0, _("John Smith"));
    listCtrl->SetItem(index, 1, _("jsmith"));

    box->Add(listCtrl, 1, wxEXPAND, 0);
    SetSizer(box);
    box->SetSizeHints(this);
    Show(true);
  }
};

class App : public wxApp
{
  bool OnInit()
  {
    SetTopWindow(new Frame());
  }
};

IMPLEMENT_APP(App);
#包括
类框架:公共wxFrame
{
公众:
框架():
wxFrame(NULL,wxNewId(),xframe(“App”))
{
wxBoxSizer*box=新的wxBoxSizer(wxVERTICAL);
wxListCtrl*listCtrl=newwxlistctrl(这个,wxNewId(),wxDefaultPosition,wxDefaultSize,wxLC_报告);
listCtrl->InsertColumn(0,(“用户名”));
listCtrl->InsertColumn(1,(“用户ID”);
长索引=listCtrl->InsertItem(0,(“John Smith”);
listCtrl->SetItem(索引,1,u(“jsmith”);
框->添加(listCtrl,1,wxEXPAND,0);
固定器(盒);
框->设置大小输入(此);
显示(真实);
}
};
类应用程序:公共wxApp
{
bool OnInit()
{
SetTopWindow(新框架());
}
};
实施应用程序(APP);

好的,在wxWidgets论坛贡献者的帮助下,我终于解决了这个问题。问题是:我在使用

alist1=newwxlistctrl(m_panel1,wxID_ANY,wxDefaultPosition,wxSize(300,-1),wxLC_图标| wxLC_报告| wxLC_单选)


作为WXLISTCRL的样式。事实证明,wxLC_图标和wxLC_报告是互斥的,所以只能有一个。当我删除wxLC_图标时,它工作得很好!再次感谢你的帮助小鸭子

好的,在wxWidgets论坛贡献者的帮助下,我终于解决了这个问题。问题是:我在使用

alist1=newwxlistctrl(m_panel1,wxID_ANY,wxDefaultPosition,wxSize(300,-1),wxLC_图标| wxLC_报告| wxLC_单选)


作为WXLISTCRL的样式。事实证明,wxLC_图标和wxLC_报告是互斥的,所以只能有一个。当我删除wxLC_图标时,它工作得很好!再次感谢你的帮助小鸭子

对于我来说,这个例子是在列上插入的最好方法

#include <wx/wx.h>
#include <wx/listctrl.h>
#include <wx/colour.h>

enum { ID_LISTBOOK = 10};

class MyApp:public wxApp {
bool OnInit()
{
if ( !wxApp::OnInit() )
return false;

wxInitAllImageHandlers();
wxFrame* frame   = new wxFrame(NULL, wxID_ANY,"wxListCtrl Insert Colored Items");
wxListCtrl* listCtrl = new wxListCtrl(frame,ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
listCtrl->InsertColumn(0, "Name", wxLIST_FORMAT_LEFT);
listCtrl->InsertColumn(1, "Number", wxLIST_FORMAT_LEFT);

wxListItem* item     = new wxListItem();

item->SetBackgroundColour(*wxRED);
item->SetText(wxT("Programmer"));
item->SetId(0);


listCtrl->InsertItem(0, *item);
listCtrl->InsertItem(1, *item);
listCtrl->InsertItem(2, *item);
listCtrl->InsertItem(3, *item);

listCtrl->SetItem(0,0,wxT("1"), -1);
listCtrl->SetItem(0,1,wxT("1"), -1);
listCtrl->SetItem(1,0,wxT("2"), -1);
listCtrl->SetItem(1,1,wxT("2"), -1);
listCtrl->SetItem(2,0,wxT("3"), -1);
listCtrl->SetItem(2,1,wxT("3"), -1);
listCtrl->SetItem(3,0,wxT("4"), -1);
listCtrl->SetItem(3,1,wxT("4"), -1);

frame->Show(true);
return true;
};
};

IMPLEMENT_APP(MyApp)
#包括
#包括
#包括
枚举{ID_LISTBOOK=10};
MyApp类:公共wxApp{
bool OnInit()
{
如果(!wxApp::OnInit())
返回false;
wxInitAllImageHandlers();
wxFrame*frame=newwxframe(NULL,wxID_ANY,“wxListCtrl插入彩色项”);
wxListCtrl*listCtrl=新的wxListCtrl(框架、ID_LISTBOOK、wxDefaultPosition、wxDefaultSize、wxLC_报告);
listCtrl->InsertColumn(0,“名称”,wxLIST\u格式\u左);
listCtrl->InsertColumn(1,“数字”,wxLIST\u格式\u左);
wxListItem*项=新的wxListItem();
项目->立根背景颜色(*wxRED);
item->SetText(wxT(“编程器”);
项目->设置ID(0);
listCtrl->InsertItem(0,*项);
listCtrl->InsertItem(1,*项);
listCtrl->InsertItem(2,*项);
listCtrl->InsertItem(3,*项);
listCtrl->SetItem(0,0,wxT(“1”),-1);
listCtrl->SetItem(0,1,wxT(“1”),-1);
listCtrl->SetItem(1,0,wxT(“2”),-1);
listCtrl->SetItem(1,1,wxT(“2”),-1);
listCtrl->SetItem(2,0,wxT(“3”),-1);
listCtrl->SetItem(2,1,wxT(“3”),-1);
listCtrl->SetItem(3,0,wxT(“4”),-1);
listCtrl->SetItem(3,1,wxT(“4”),-1);
帧->显示(真);
返回true;
};
};
实现应用程序(MyApp)

对于我来说,这个例子是在列上插入的最佳方式

#include <wx/wx.h>
#include <wx/listctrl.h>
#include <wx/colour.h>

enum { ID_LISTBOOK = 10};

class MyApp:public wxApp {
bool OnInit()
{
if ( !wxApp::OnInit() )
return false;

wxInitAllImageHandlers();
wxFrame* frame   = new wxFrame(NULL, wxID_ANY,"wxListCtrl Insert Colored Items");
wxListCtrl* listCtrl = new wxListCtrl(frame,ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
listCtrl->InsertColumn(0, "Name", wxLIST_FORMAT_LEFT);
listCtrl->InsertColumn(1, "Number", wxLIST_FORMAT_LEFT);

wxListItem* item     = new wxListItem();

item->SetBackgroundColour(*wxRED);
item->SetText(wxT("Programmer"));
item->SetId(0);


listCtrl->InsertItem(0, *item);
listCtrl->InsertItem(1, *item);
listCtrl->InsertItem(2, *item);
listCtrl->InsertItem(3, *item);

listCtrl->SetItem(0,0,wxT("1"), -1);
listCtrl->SetItem(0,1,wxT("1"), -1);
listCtrl->SetItem(1,0,wxT("2"), -1);
listCtrl->SetItem(1,1,wxT("2"), -1);
listCtrl->SetItem(2,0,wxT("3"), -1);
listCtrl->SetItem(2,1,wxT("3"), -1);
listCtrl->SetItem(3,0,wxT("4"), -1);
listCtrl->SetItem(3,1,wxT("4"), -1);

frame->Show(true);
return true;
};
};

IMPLEMENT_APP(MyApp)
#包括
#包括
#包括
枚举{ID_LISTBOOK=10};
MyApp类:公共wxApp{
bool OnInit()
{
如果(!wxApp::OnInit())
返回false;
wxInitAllImageHandlers();
wxFrame*frame=newwxframe(NULL,wxID_ANY,“wxListCtrl插入彩色项”);
wxListCtrl*listCtrl=新的wxListCtrl(框架、ID_LISTBOOK、wxDefaultPosition、wxDefaultSize、wxLC_报告);
listCtrl->InsertColumn(0,“名称”,wxLIST\u格式\u左);
listCtrl->InsertColumn(1,“数字”,wxLIST\u格式\u左);
wxListItem*项=新的wxListItem();
项目->立根背景颜色(*wxRED);
item->SetText(wxT(“编程器”);
项目->设置ID(0);
listCtrl->InsertItem(0,*项);
listCtrl->InsertItem(1,*项);
listCtrl->InsertItem(2,*项);
listCtrl->InsertItem(3,*项);
listCtrl->SetItem(0,0,wxT(“1”),-1);
listCtrl->SetItem(0,1,wxT(“1”),-1);
listCtrl->SetItem(1,0,wxT(“2”),-1);
listCtrl->SetItem(1,1,wxT(“2”),-1);
listCtrl->SetItem(2,0,wxT(“3”),-1);
listCtrl->SetItem(2,1,wxT(“3”),-1);
listCtrl->SetItem(3,0,wxT(“4”),-1);
listCtrl->SetItem(3,1,wxT(“4”),-1);
帧->显示(真);
返回true;
};
};
实现应用程序(MyApp)

small\u duck,谢谢你的代码。我也在做同样的事情,但没有成功。我甚至复制并粘贴了你的代码来试用,但我仍然无法显示第二列的值!奇怪的看看是否可以在其他平台或其他编译器上尝试,因为它开始看起来可能是您的问题!小鸭子,谢谢