GTK下拉日历小部件?

时间:2011-02-01 17:30:22

标签: calendar gtk

我在使用我的应用程序创建下拉GTK日历小部件时遇到了麻烦。

目的:

基本上我想要一个文本组合框,您可以输入日期,例如2011/02/01,它会自动格式化日期。这部分不是问题,另一部分是下拉日历方面,您可以单击组合框旁边的下拉按钮,它会下拉到日历中,您可以在其中选择日期。

问题/半解决方案:

我花了一些时间用Ruby GTK(真的是Gnome绑定)来解决这个问题,下面是我提出的一些解决方案。

  1. 基本上我创建了一个文本框,然后创建了一个按钮并给它“向下箭头”来模拟一个组合框的下拉按钮,它看起来没问题,不是世界上最伟大的东西。

  2. 对于实际的日历小部件,我将创建一个无边框/无标题的对话框并将日历小部件嵌入其中,并将其放置在下拉组合框列表将出现的文本框下方。

  3. 当用户选择日期时,它将被取消。

  4. 然而,我提出的上述解决方案有几个问题:

    1. 无边框/无标题对话框仍会创建正在任务栏上显示的内容...

    2. 如果用户按下“ctrl + q”退出应用程序,由于日历小部件具有焦点,因此键绑定永远不会进入父窗口。

    3. 如果我移动父窗口,日历小部件就会卡在空中。

    4. 如果我点击其他地方或在文本框中输入日期,日历小部件不会消失,我必须从日历小部件中选择一个日期......

    5. 总之,我想就如何做一个正确/更好的方式来做日历下拉小部件提出一些建议或建议?我宁愿把这个纯粹保留在GTK中,而不需要像Gnome那样的其他小部件......

1 个答案:

答案 0 :(得分:2)

组合框为其下拉菜单选择GtkListStore。您可以实现一个自定义GtkCellRenderer,在其单元格中将日期呈现为GtkCalendar,然后在列表存储中只有一个项目(日期)。当您下拉组合框时,将显示日历,用户可以选择日期,然后您可以从列表商店中读取日期。