不是那麼容易的設置背景顏色,但你可以設置前景色
Fl_Menu_Item choices[] =
{
// ,-- The colour
{"red",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFF000000},
{"blue",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x0000FF00},
{"green",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x00FF0000},
{"yellow",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFFFF0000},
{0}
};
...
Fl_Choice *c = new Fl_Choice(50,250,200,25);
c->menu(choices);
或者,你可以從Fl_Choice得到,如果你不想這麼多的零
class ColourChoice: public Fl_Choice
{
public:
ColourChoice(int x, int y, int w, int h, const char* l = 0)
: Fl_Choice(x, y, w, h, l)
{
}
void add(const char* text, Fl_Color color)
{
Fl_Choice::add(text);
Fl_Menu_Item* item = const_cast<Fl_Menu_Item*>(find_item(text));
item->labelcolor(color);
}
};
...
ColourChoice* c = new ColourChoice(...);
c->add("purple", (Fl_Color)0xFF00FF00);
感謝花時間回答,背景有多不同?我甚至不知道該如何尋找誠實... fltk是一個很好的解決方案,但這些小問題很難找到例子或任何東西。不幸的是,我不能爲你的答案投票,但希望一個好的靈魂會在我的位置這樣做,直到我可以自己做。 –
不需要upvote - 只需勾選它作爲答案。改變背景涉及用背景顏色選項重寫Fl_Menu。花一些時間來了解FLTK代碼:有很多單行和單字母變量。背景的主要問題是您可能還必須更改前景色,因爲某些組合不太清晰 - 例如藍色爲黑色。另一種選擇是使用Fl_Radio_Light_Button並更改燈光的顏色,但會佔用比Fl_Choice更多的空間。 – cup
但它仍然是一個下拉選擇?你能告訴我一個例子嗎? –