彩票走势图

C++跨平台图形界面开发:如何使用Qt设置鼠标样式

转帖|使用教程|编辑:鲍佳佳|2021-06-23 11:06:01.683|阅读 296 次

概述:Qt内置基本的鼠标样式,使用函数QCursor(Qt::CursorShape shape)进行设置。对于不同操作系统来说,设置的Qt鼠标样式会被替换成当前系统支持的鼠标样式效果。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。

下载Qt6最新试用版

Qt组件推荐:

  • QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面

1、使用Qt内置鼠标样式

Qt内置基本的鼠标样式,使用函数QCursor(Qt::CursorShape shape)进行设置。对于不同操作系统来说,设置的Qt鼠标样式会被替换成当前系统支持的鼠标样式效果。

Qt内置的鼠标样式(CursorShape)如下:

比如设置鼠标样式为Qt::PointingHandCursor:

CustomCursor::CustomCursor(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	setCursor(Qt::PointingHandCursor); //设置鼠标样式
}
效果如下:

2、使用图片自定义鼠标样式
使用函数QCursor::QCursor(const QBitmap & bitmap, const QBitmap & mask, int hotX = -1, int hotY = -1),需要准备自定义鼠标样式的图片和自定义鼠标样式的掩码图片,hotX和hotY设置鼠标热点。甚至可以生成与背景具有反差效果的鼠标样式。该函数详细使用说明如下:

一、使用函数生成鼠标样式的图片:


CustomCursor::CustomCursor(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	
	QBitmap bitmap(32, 32); //生成32x32大小的bitmap图片
	bitmap.fill(Qt::color1); //填充1像素值
	QBitmap bitmap_mask(32, 32); //生成32x32大小的bitmap_mask图片
	bitmap_mask.fill(Qt::color0); //填充0像素值

	QCursor cursor(bitmap, bitmap_mask, -1, -1); //-1 -1表示鼠标热点在中心点
	setCursor(cursor); //设置自定义的鼠标样式
}

效果如下:

二、使用画图工具生成鼠标样式的图片

为方便理解,这里将颜色设为黑色RGB(0,0,0)表示为1像素值,将颜色设为白色RGB(255,255,255)表示为0像素值。比如生成的bitmap图片:

生成的bitmap_mask图片:

CustomCursor::CustomCursor(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QBitmap bitmap("bitmap.png"); //背景透明的png格式图片
	QBitmap bitmap_mask("bitmap_mask.png");

	QCursor cursor(bitmap, bitmap_mask, -1, -1); //-1 -1表示鼠标热点在中心点
	setCursor(cursor); //设置自定义的鼠标样式
}


效果如下:

3、使用XPM生成鼠标样式
XPM用于创建位图文件,可生成背景透明的图片。使用函数QPixmap(const char * const xpm[])加载xpm。

static const char* const xpmCursor[] = {
	// columns rows colors chars-per-pixel
	"20 20 3 1",
	"   c None",
	"=  c #FF796D",   //=的颜色
	"*  c #FFE6B2",   //*的颜色
	"                    ",
	"    =============   ",
	"    =============   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    =============   ",
	"    =============   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    ==*********==   ",
	"    =============   ",
	"    =============   ",
	"                    ",
};

CustomCursor::CustomCursor(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	
	QPixmap pixmap(xpmCursor);
	QCursor cursor(pixmap); //加载xpm生成的图标文件
	setCursor(cursor); //设置自定义的鼠标样式
}

效果如下:


版权声明:本文为CSDN博主「有何不为」的原创文章.
原文链接://blog.csdn.net/Staranywhere/article/details/87895321


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP