【问题标题】:How to make a similar interface using wxWidgets?如何使用 wxWidgets 制作类似的界面?
【发布时间】:2020-06-20 18:18:00
【问题描述】:

如何使用 wxWidgets 制作类似的界面? 我需要动态创建文本字段。我知道如何使用 Delphi gitHub 做到这一点。但是如何用 C++ 和 wxWidgets 来做呢?

这是我的代码。我不明白该怎么办

Simple::Simple(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(270, 450))
{
    wxBoxSizer *hbox = new wxBoxSizer(wxVERTICAL);

    for (int i = 0; i < 25; i++)
        {
            hbox->Add(new wxListBox(this, wxID_ANY, wxDefaultPosition, wxSize(250, 60)), wxSizerFlags(0).Border(wxALL, 5));
            auto itm = hbox->GetItem(i);
            itm->SetId(i);
        }
    SetSizer(hbox);
}

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    @Nindzzya,

    基本上你创建了一个 wxFrame。您在其中放置了一个 wxScrolled 的实例。然后在这个 wxScrolled() 中放置一个垂直的 wxBoxSizer。然后最后在该 sizer 中添加适当的控件。

    按照你的例子:

    for (auto i = 0; i < 25; i++)
        {
            textctrl[i] = new wxTextCtrl( this, wxID_ANY, wxDefaultPosition, wxSize( 250, 60 ), wxSizerFlags( 0 ).Border( wxALL, 5 ) )
            hbox->Add( textctrl[i] );
        }
    
    MyFrame::Some_Func()
    {
        for( auto i : { 0, 25 } )
        {
            textctrl[i]->GetValue();
        }
    }
    

    您甚至不需要 id 或类似的东西。这个问题是关于基本 C++ 的。它与 wxWidgets 没有任何关系。

    【讨论】:

    • 我不明白该怎么做。
    • 您需要花一些时间思考它并阅读/研究它。在帖子中,您提出了一个非常广泛的问题,但没有展示您迄今为止尝试过的内容。那么你对这个答案的唯一回应是一些不可操作的东西。帮助我们为您提供帮助。
    • @Nindzzya,看看 wxWidgets 提供的滚动示例。查看文档,然后尝试修改示例,以便它可以执行您想要的操作。另外,请重新阅读我的回复 - 您需要在框架上使用 wxScrolled()。
    • @Igor,如何访问循环创建的wxTextCtrl?
    • @Nindzzya,您可以为控件分配一个 id - 这是最简单的。或者,如果您在某个事件处理程序中需要它 - 请查看 event.GetEventObject() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多