#c #fltk
#c #fltk
Вопрос:
Мне было интересно, как изменить ширину области, отвечающей за отображение текущего значения Fl_Hor_Value_Slider. Дело в том, что я хочу иметь возможность выбрать год (это 4 цифры), а места сбоку от ползунка недостаточно для правильного отображения номера года.
Я просмотрел документы и попробовал следующие функции:
slider_size()
maximum()
minimum()
range()
Но, похоже, они не делают то, что я хочу.
Мне кажется, что я пропустил что-то очевидное.
Есть идеи?
Комментарии:
1. Я вроде как решил проблему XD, я просто уменьшил textsize() и получил нужное число. Однако это не запрошенное решение.
Ответ №1:
Проблема в том, что размер жестко задан до 35 для горизонтального или 25 для вертикального. Вам необходимо изменить файл Fl_Value_Slider.cxx. При обычном рисовании он имеет
if (horizontal()) {
bww = 35; sxx = 35; sww -= 35;
} else {
syy = 25; bhh = 25; shh -= 25;
}
Это основано на textsize_, равном 10. Если вы измените размер текста, то он должен увеличиваться в зависимости от размера текста. Что-то вроде
if (horizontal()) {
int width = textsize() * 3 5;
bww = width; sxx = width; sww -= width;
} else {
int height = textsize() * 2 5;
syy = height; bhh = height; shh -= height;
}
Затем перестройте библиотеку fltk. Либо сохраните этот патч, либо отправьте его в FLTK и проверяйте всякий раз, когда получаете обновление от FLTK. Для тестирования
Fl_Hor_Value_Slider* o = new Fl_Hor_Value_Slider(10, 50, 250, 50, "");
o->tooltip("Value Slider");
o->selection_color((Fl_Color)1);
o->textsize(25);
o->value(2000)
o->range(2000, 2099);
o->precision(0);
Редактировать
В качестве альтернативы, создайте свой собственный Hor_Value_Slider на основе Fl_Hor_Value_Slider и переопределите метод рисования.
Комментарии:
1. @cup Спасибо за этот хороший ответ. Я создал проблему GitHub для этого вопроса и добавил ваши предложения по коду. Примечание: это не означает, что это будет реализовано в ближайшее время, но это как напоминание.