【发布时间】:2011-07-03 12:35:01
【问题描述】:
我正在尝试在 wxWidgets 中创建一个用户控件来表示音频混音器中的通道。因此,每个通道内部都有一组标准控件(一些滑块、按钮等)。
所以在我的课堂上我有一个sizer,我可以在其中添加我需要的各种子控件。到目前为止,这是可行的。
但我遇到的问题是
-
1234563我尝试为运行 event.Skip() 的主控件连接一个事件,但这没有帮助。
1234563不会在它所在的 sizer 中展开,它只是被绘制成一个小盒子(大约 10-20 平方像素),即使子控件占用了更多空间。
有什么想法吗?
更新:
mangoMixerStrip.cpp
mangoMixerStrip::mangoMixerStrip(wxFrame* parent, HostChannel* channel) : wxPanel(parent)
{
myChannel = channel;
SetBackgroundColour(wxColour(172,81,90));
wxBoxSizer* s = new wxBoxSizer(wxVERTICAL);
// some custom controls i made which all work fine when added like any other control, derived from wxPanel also
faderPan = new mangoFader(parent, 200, false, 55);
faderGain = new mangoFader(parent, 200, true, 126);
buttonSolo = new mangoButton(parent, false, ButtonGraphic::Solo);
s->Add(faderPan);
s->Add(buttonSolo);
s->Add(faderGain);
this->SetSizer(s);
this->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(mangoMixerStrip::mouseDown)); // this function simply contains event.Skip()
}
在我的主 wxFrame 中
mangoFrameMain::mangoFrameMain(wxWindow* parent) : FrameMain( parent )
{
HostChannel* h = new HostChannel();
h->setName("what up"); // these 2 lines unrelated to the UI
mangoMixerStrip *test = new mangoMixerStrip(this, h);
this->GetSizer()->Add(test, 1, wxFIXED_MINSIZE, 0);
}
澄清一下:mangoMixerStrip 实例本身获取我连接到它的任何事件,但它的子控件没有。
【问题讨论】:
-
从 wxPanel 派生是正确的方法。奇怪的是您的控件没有收到事件。请发布您的代码,以便我们了解发生了什么。