У меня были проблемы с созданием выпадающего виджета календаря GTK в моем приложении.
Цели:
По сути, я хотел получить текстовое комбо- в поле, где вы можете ввести дату, например, 2011/02/01, и она автоматически отформатирует дату.Эта часть не является проблемой, другая часть - это раскрывающийся календарь, в котором вы можете нажать на кнопку раскрывающегося списка рядом со списком, и она выпадает в календарь, в котором вы можете выбрать дату.
Проблемы / полу-решения:
Я потратил некоторую работу на хакерство с Ruby GTK (на самом деле привязки Gnome), и ниже приведены некоторые решения, которые я придумалас.
По сути, я создал текстовое поле, затем создал кнопку и дал ей «стрелку вниз» для имитации выпадающей кнопки для комбинированного окна, и это выглядит хорошо, не самым лучшимвещь в мире.
Для фактического виджета календаря я бы создал диалоговое окно без полей и без заголовка, вставил в него виджет календаря и поместил его прямо под текстовым полем, где выпадающий списокпоявится список со списком.
Он будет отклонен, когда пользователь выберет дату.
Однако с указанным выше есть несколько проблем.sРешение, которое я придумал:
Диалоговое окно без полей / без заголовка все еще создает что-то, что отображается на панели задач ...
Если пользователь нажимает «ctrl + q», чтобы выйти из приложения, поскольку виджет календаря имеет фокус, привязка клавиш никогда не достигает родительского окна.
Еслия перемещаю родительское окно, виджет календаря застрял там, плавающий в воздухе.
Если я щелкну где-нибудь еще или введу дату в текстовое поле, виджет календаря не исчезнет, янужно выбрать дату из виджета календаря ...
Итак, вкратце, я хотел бы получить совет или предложение о том, как сделать правильный / лучший способ сделать виджет календаря выпадающим?Я бы предпочел хранить это в GTK без дополнительных виджетов, таких как Gnome и т. Д.