【问题标题】:Automatically generate gtk callback functions自动生成gtk回调函数
【发布时间】:2018-01-29 21:08:53
【问题描述】:

我刚开始在 Slackware 14.2 上使用 Glade 3.8.5。我已经成功地创建了一个带有“destroy”信号的回调处理程序的简单窗口。这对于一个小而简单的教程来说很好。但是,手动实现所有回调函数可能很乏味。如果 GUI 稍微复杂一点,我什至可能会忘记一些。是否有任何工具可以为 c 中的这些回调函数自动生成骨架?我无法通过网络搜索找到任何内容,我也不确定要搜索哪些标签。

【问题讨论】:

  • 如果您发现编写 C 所需的详尽代码很烦人(编辑乏味),您可能更喜欢另一种语言。
  • @WeatherVane 你真的理解这个问题吗?我说的是可以自动生成的样板代码。我并不回避详尽的编码本身。总是切换回 glade 并查看我给信号处理程序起的名字是非常低效的。我可能可以自己编写一些代码来做我想做的事,但我不想重新发明轮子。你的评论既不具建设性,也不是特别诙谐。不管怎样,我把“烦人”改成了“乏味”,虽然我没想到有人会沉迷于词汇。
  • 请查看我投票接近的原因。我不是想机智。您的问题“是否有任何工具可以......”是题外话。
  • @WeatherVane 它仍然有自己的标签,this 网站上的关注者数量不一定代表它的受欢迎程度,它标准包含在所有主要的 Linux 发行版中,这使得它是一种常用工具。
  • 现在我想起来了,Anjuta 有一个拖放信号给函数创建者。

标签: c gtk glade boilerplate


【解决方案1】:

不确定我是否理解“手动实现所有回调函数”的意思。实现是回调函数的内容,编写它是你的工作,因为你是唯一知道你要实现什么的人。

如果 GUI 稍微复杂一点,我什至可能会忘记一些

每个小部件都有很多很多的信号。 Glade 可以帮助您设计 UI,但您只需要实现那些默认组件不适合您想要实现的功能。

现在,如果“手动实现所有回调函数”是指“手动编写回调框架”,那么在某个时间点,glade 有一些代码生成功能,但已经(理所当然地)删除了。那是因为修改生成的代码很难维护。对该骨架进行编码只需复制/粘贴文档中的信号签名并为您的回调命名。

【讨论】:

  • 是的,我的意思是骨架,我编辑了问题以使其更清晰。这不仅仅是复制/粘贴的问题,而且我必须在 Glade 和我的编辑器之间切换以查找我给信号命名的名称。如果有很多信号,那么我将不得不检查每个小部件以确保我没有忘记某些东西。无论如何,谢谢你的回答。
  • 您在使用自动连接功能吗?如果没有,您可以使用GtkBuilder 对象在您的代码中获取您的小部件,然后手动连接您的信号。这样,您必须添加更多代码,因为您必须自己连接信号,但同时您不必使 ui 文件和代码之间的回调名称匹配。
【解决方案2】:

Anjuta 确实内置了 Glade。我最近决定使用 Anjuta 和 GTK+ 3.2 来开发一个小项目。有一些怪癖,例如,在 Anjuta 中,您必须使用鼠标的“shift”键来移动 UI 开发窗口中的小部件(例如按钮、标签等)(在 Glade 中,工具栏上有一个符号你点击它允许你用鼠标移动小部件)。

具有讽刺意味的是,您提出了有关小部件信号处理的骨架函数的具体问题。我刚刚在 Anjuta 构建项目时发现了同样的问题。我确实注意到默认情况下“销毁”窗口回调函数总是在窗口上创建。如果我发现如何让 Anjuta 创建骨架函数,我将回帖....如果没有,我将使用复制/粘贴并根据需要进行修改。

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多