博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于GtkEntry无法键入光标
阅读量:6999 次
发布时间:2019-06-27

本文共 1617 字,大约阅读时间需要 5 分钟。

今天,准确地说是昨天,遇到一个很诡异的问题,这个问题并不常见:

用GTK创建文本输入框(GtkEntry),编译通过并生成exe后运行,发现根本不能输入文本,甚至连光标都无法键入。

示例代码如下:

#include 
int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *entry; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_title(GTK_WINDOW(window), "GtkEntry"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); entry = gtk_entry_new(); gtk_container_add (GTK_CONTAINER (window), entry); gtk_widget_show_all(window); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main(); return 0; }

上面的代码当然只是作为演示,运行截图如下:

无论我怎么拼命地在文本框中点击鼠标,光标就是进不去,这让我非常苦恼。由于接触GTK也不是很久,一开始就是检查代码,确定代码无误之后,我将代码发给师兄,在他那里运行竟然完全正确!

也许是环境没有配置好。我用的是Visual Studio 2005,系统是64位的Windows 7。在将开发环境重新搭建甚至后来重装了系统之后,居然还是没有用!真是郁闷。

看来同样的代码在不同的机器上编译运行会有差别的。于是在网上找找原因,没有直接解决这个问题的。

但是偶然看到一篇文章:

这里边的代码我拷过来运行,居然可以在里边的文本框输入文本,这让我看到了希望,于是好好的比较了两段代码。

总算找出问题所在:设置各个控件显示的语句的位置。

我的代码是将所有控件创建布局好了之后,在最后来一句gtk_widget_show_all(window);

而他的代码,是每创建一个控件并稍作设置之后,就用gtk_widget_show()函数显示。

后来经过不断的测试发现,主要是设置主窗口window的显示。很多人都喜欢在最后来一句gtk_widget_show_all(window);

这样当然非常方便,但是一些罕见的问题也许就会发生,就好比我遇到的。针对我上面的问题,我的解决办法是:

在gtk_widget_show_all(window);前边添加gtk_widget_show(window);

这样,运行之后如下:

就在我沾沾自喜的时候,突然发现不加gtk_widget_show(window);这句,也能够输入,前提是运行时带着控制台窗口。我们在开发 时通常带着控制台窗口以便测试,最后再将它去掉。在我的电脑上运行的时候,同时弹出上面的GtkEntry窗口以及控制台窗口,但是默认选中的是 GtkEntry窗口,此时如果先选中一下控制台窗口,再回来选中GtkEntry窗口,就可以输入文本框了。

但是这样,麻烦不说,以后把控制台黑框去掉,还是不管用。所以,上面的解决方法还是必要的。

这个问题并不常见,我用的是64位Windows 7 + Visual Studio 2005,估计跟系统和机器有关。

至于为什么会有上面的问题,那要深入研究GTK了。

转载地址:http://asevl.baihongyu.com/

你可能感兴趣的文章
Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)
查看>>
SpringMVC之@ResponseBody
查看>>
Ubuntu开机自动挂载Windows分区(NTFS FAT32)教程
查看>>
Centos7开通端口方法
查看>>
oracle--架构
查看>>
动态规划的基本方法---多阶段决策过程及实例
查看>>
驰骋工作流引擎设计系列02
查看>>
HDOJ 2087 KMP算法
查看>>
一步一步学Ruby(四):Ruby标准类型
查看>>
mtu检测
查看>>
postgresql 自动备份
查看>>
win7 远程桌面凭证不工作
查看>>
Hg Mercurial版本管理介绍
查看>>
block的使用
查看>>
使用Toolbar自定义布局的时候左边右边总有一点空间无法使用
查看>>
物联网世界常见传输方式简介(思维导图)
查看>>
开发者招聘节 | 2019阿里巴巴技术面试题分享(陆续放出)
查看>>
JAVA常用类
查看>>
Java SE 7新特性:创建泛型实例时自动类型推断
查看>>
面试问题之:JSON是什么?
查看>>