分页: 1 / 1

通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-10 11:13
药师9528
如题,题主在开发一款运行在Ubuntu上面的软件,使用Qt5开发,开机启动终端后使用xinit 启动我自己的qt程序,现在的问题是,我程序用着用着,有时候鼠标就变成了一个“X”(原始X Window的那个样式),请教一下前辈们有没有遇到过类似的情况,如果有的话,还请不吝赐教。

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-10 12:58
vickycq
药师9528 写了:有时候鼠标就变成了一个“X”
是在 Qt 程序里面变成 “X”, 还是在外面,即 X 根窗口上变成 “X”?
有没有使用窗口管理器?

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-10 13:49
药师9528
vickycq 写了:
药师9528 写了:有时候鼠标就变成了一个“X”
是在 Qt 程序里面变成 “X”, 还是在外面,即 X 根窗口上变成 “X”?
就在我自己的那个 Qt 程序里,鼠标由正常的样子,变成了 X window 默认的那个 “X”,没有开其他的程序。

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-10 15:20
药师9528
vickycq 写了:
药师9528 写了:有时候鼠标就变成了一个“X”
是在 Qt 程序里面变成 “X”, 还是在外面,即 X 根窗口上变成 “X”?
有没有使用窗口管理器?
在我自己写的 Qt 程序里变粗 “X”, 没有使用窗口管理器吧,我没有启动桌面,直接用xinit 启动了我的qt程序。

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 11:23
astolia
没遇到过这种用着用着自己变的,有可能是运行环境没弄好?或者是你代码无意中改动了系统的设置尤其是环境变量?
光标一般都不是由窗口管理器设置的,而是显示管理器/登录管理器。ubuntu的话,现在是lightdm,从你的描述看,应该没有用它?
直接用xinit启动,最好自己设置一下相关的东西。影响到光标主题的有XCURSOR_THEME环境变量,Xresources文件里设置的Xcursor.theme参数,你都注意一下呗。也可在xinitrc文件里用xsetroot -cursor_name 设置

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 11:27
药师9528
astolia 写了:没遇到过这种用着用着自己变的,有可能是运行环境没弄好?
影响到光标主题的有XCURSOR_THEME环境变量,Xresources文件里设置的Xcursor.theme参数,你都设置一下呗
或者在xinitrc文件里用xsetroot -cursor_name 设置
这两天跟了一下,发现光标变样的情况如下:

我打开了一个弹窗,弹窗上有一个按钮,我点了按钮之后,这个弹窗关闭,并且返回到另一个页面,这时候鼠标就会变成“X”,然后我再点击触摸屏,鼠标又会变回来。

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 11:38
astolia
从你的描述来看像是因为Qt程序和X用了不同的光标主题。你在xinitrc里给X设置一下主题应该就行了

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 13:35
药师9528
astolia 写了:从你的描述来看像是因为Qt程序和X用了不同的光标主题。你在xinitrc里给X设置一下主题应该就行了
找了一下您说的相关设置,网上说的都比较含糊,请问可以详细一点怎样设置吗?

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 15:17
astolia
就是在.xinitrc里面加一行

代码: 全选

xsetroot -cursor_name left_ptr
将X默认的光标设置为普通箭头,如果你程序默认是其他光标,根据下面的列表选
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 15:21
药师9528
astolia 写了:就是在.xinitrc里面加一行

代码: 全选

xsetroot -cursor_name left_ptr
将X默认的光标设置为普通箭头,如果你程序默认是其他光标,根据下面的列表选
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch
好的,非常感谢,在网上找了好多 xsetroot 的内容,都比较含糊,多谢您的指教,我现在就设置一下看,如果没有 .xinitrc 的话,是不是自己建立一个 ~/.xinitrc 也可以?

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 15:22
药师9528
astolia 写了:就是在.xinitrc里面加一行

代码: 全选

xsetroot -cursor_name left_ptr
将X默认的光标设置为普通箭头,如果你程序默认是其他光标,根据下面的列表选
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch
好的,非常感谢,在网上找了好多 xsetroot 的内容,都比较含糊,多谢您的指教,我现在就设置一下看,如果没有 .xinitrc 的话,是不是自己建立一个 ~/.xinitrc 也可以?

Re: 通过Xinit 启动的Qt程序,鼠标有时候变为“X”

发表于 : 2017-07-13 15:56
药师9528
astolia 写了:就是在.xinitrc里面加一行

代码: 全选

xsetroot -cursor_name left_ptr
将X默认的光标设置为普通箭头,如果你程序默认是其他光标,根据下面的列表选
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch
搞定了,我在自己程序里用加了句
system("xsetroot -cursor left_ptr");
非常感谢