• 11374阅读
  • 6回复

大牛:Qt如何设置动态光标 [复制链接]

上一主题 下一主题
离线muqiujuan
 
只看楼主 倒序阅读 楼主  发表于: 2012-11-21
已经知道使用setCursor ( const QCursor & )可以设置光标
例:
  1. setCursor(QCursor(QPixmap("../image/face.png")));

可以设置光标图片为face.png;
现在我想使用gif格式图片作为光标,没有找到合适的方法?大牛们有知道的吗?求帮助!

另外是使用win32的方法,准备一个.ani格式的光标文件
  1. HCURSOR m;
  2. m.LoadCursorFromFile("../image/dinosau2.ani");
  3. this->setCursor(QCursor(m));
包含了头文件winuser.h 和windows.h,但编译不通过,实在不知道怎么办了!求帮助啊!
离线feiyang111

只看该作者 1楼 发表于: 2012-11-22
改成这样:
HCURSOR m;
m = LoadCursorFromFile(L"../image/dinosau2.ani");
this->setCursor(QCursor(m));

完美通过....
离线muqiujuan
只看该作者 2楼 发表于: 2012-11-22
回 1楼(feiyang111) 的帖子
你的通过了!真好!
我也修改成你这样了,还是不通过啊!难道是我俩的环境不一样的原因吗?



你再帮我看看呗!
d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4095: error: 'SHORT' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4096: error: 'DWORD' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4097: error: 'BOOL' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4098: error: expected initializer before 'WindowFromDC'

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4099: error: expected initializer before 'WindowFromPoint'

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4100: error: 'UINT' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4101: error: 'BOOL' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4102: error: 'BOOL' does not name a type

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4103: error: expected initializer before 'wsprintfA'

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4104: error: expected initializer before 'wsprintfW'

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4105: error: expected initializer before 'wvsprintfA'

d:\program\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/winuser.h:4106: error: expected initializer before 'wvsprintfW'

..\mywidget1\widget.cpp: In constructor 'Widget::Widget(QWidget*)':

..\mywidget1\widget.cpp:10: error: 'LoadCursorFromFileW' was not declared in this scope

mingw32-make[1]: Leaving directory `F:/QtTemp/mywidget1-build-desktop'

mingw32-make: Leaving directory `F:/QtTemp/mywidget1-build-desktop'

mingw32-make[1]: *** [debug/widget.o] Error 1

mingw32-make: *** [debug] Error 2

The process "D:/program/Qt/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project mywidget1 (target: Desktop)
When executing build step 'Make'
离线muqiujuan
只看该作者 3楼 发表于: 2012-11-22
回 1楼(feiyang111) 的帖子
谢谢!谢谢!
改成你写的这样后,再不包含winuser.h就通过了
另外,m = LoadCursorFromFile(L"../image/dinosau2.ani");
参数中的“L”是什么意思?干嘛用呢?
离线feiyang111

只看该作者 4楼 发表于: 2012-11-23
包含winuser.h没问题不包含也行, 你的报错是因为没包含window.h

L是转为宽字符
离线muqiujuan
只看该作者 5楼 发表于: 2012-11-23
回 4楼(feiyang111) 的帖子
高手啊!原来L是转为宽字符
我包含了window.h这个头文件,这个没问题
问题是我包含了winuser.h就报错,不包含就没问题,呵呵……

离线feiyang111

只看该作者 6楼 发表于: 2012-11-23
刚试了 你把window.h放在winuser.h前面就不报错了
快速回复
限100 字节
 
上一个 下一个