C++ 如何在wxWidgets(C+;+;代码)中使用wxListCtrl向第二列添加值?
我有以下代码: 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”列下看不到任何内容。以下是显示结果的快照链接: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
谢谢 这里是显示两列的最小示例。注意,我在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,谢谢你的代码。我也在做同样的事情,但没有成功。我甚至复制并粘贴了你的代码来试用,但我仍然无法显示第二列的值!奇怪的看看是否可以在其他平台或其他编译器上尝试,因为它开始看起来可能是您的问题!小鸭子,谢谢