我刚开始使用 C++ 的 Juce GUI 库。我正在尝试创建自定义列表框,稍后我将在其中显示文件名。现在,当鼠标进入/退出/单击时,我需要更改此自定义列表框行的背景颜色。问题是 MouseEnter()、MouseExit() 和 MouseUp() 不起作用。这是代码:
class LeftExplorerItem : public Component, public MouseListener {
public:
LeftExplorerItem(String name = "LeftExplorerItem") : Component(name), isActive(false) {
setSize(100, 20);
addMouseListener(this, true);
}
void paint(Graphics& g) override {
if (!isActive) g.setColour(Colour(40, 40, 40));
else g.setColour(Colour(150, 190, 255));
g.fillRoundedRectangle(2, 2, getWidth() - 4, getHeight() - 4, 4);
g.setColour(Colours::white);
g.drawText("Frame #", 40, 0, 100, 25, Justification::centredLeft);
}
void mouseEnter(const MouseEvent& event) override {
AlertWindow("", "", AlertWindow::AlertIconType::InfoIcon);
isActive = true;
}
void mouseExit(const MouseEvent& event) override {
isActive = false;
}
void mouseUp(const MouseEvent& event) override {
AlertWindow("", "click", AlertWindow::AlertIconType::InfoIcon);
}
void resized() override {
}
private:
bool isActive;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(LeftExplorerItem)
};
这只是我的自定义列表框每个项目的类。请记住,一切看起来都很好(列表框、所有列表框项目等),唯一的问题是鼠标事件永远不会被触发。这里缺少什么?