Qt : 自定义鼠标.

在Qt中,Qt给我们列举了n多种鼠标的形状,然而更多的时候我们喜欢以一些别的图片作为鼠标比较有趣.下面有个自定义鼠标的小程序:就和画图一样,每点击一个按钮,鼠标显示不同的样式.
这里写图片描述:

主要是使用了QCursor的一个带图片的构造函数,QCursor cursor(QPixmap());然后让QWidget去设置光标即可.
如果用户点击右键,则光标恢复初始状态.

#ifndef C_H
#define C_H

#include <QtWidgets/QMainWindow>
#include "ui_c.h"
#include <QAction>
#include <QMouseEvent>

class c : public QMainWindow
{
    Q_OBJECT

public:
    c(QWidget *parent = 0);
    ~c();
protected:
    void mousePressEvent(QMouseEvent *event);
private slots:
    void showCursorSlot(QAction*);
private:
    Ui::cClass ui;
    QAction *m_penAction;
    QAction *m_brushAction;
    QAction *m_eraseAction;
};

#endif // C_H
#include "c.h"

c::c(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    this->setWindowTitle(QString::fromLocal8Bit("自定义鼠标"));

    this->setCursor(QCursor(QPixmap("./Resources/normal.png")));

    m_penAction = new QAction(this);
    m_penAction->setIcon(QIcon("./Resources/pen.png"));
    m_brushAction = new QAction(this);
    m_brushAction->setIcon(QIcon("./Resources/brush.png"));
    m_eraseAction = new QAction(this);
    m_eraseAction->setIcon(QIcon("./Resources/erase.png"));

    ui.mainToolBar->addAction(m_penAction);
    ui.mainToolBar->addAction(m_brushAction);
    ui.mainToolBar->addAction(m_eraseAction);

    connect(ui.mainToolBar, SIGNAL(actionTriggered(QAction*)), this, SLOT(showCursorSlot(QAction*)));
}

c::~c()
{

}
void c::showCursorSlot(QAction* action)
{
    if (action == m_penAction)
    {
        this->setCursor(QCursor(QPixmap("./Resources/pen.png")));
    }
    else if (action == m_brushAction)
    {
        this->setCursor(QCursor(QPixmap("./Resources/brush.png")));
    }
    else
    {
        this->setCursor(QCursor(QPixmap("./Resources/erase.png")));
    }
}
void c::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::RightButton)
    {
        this->setCursor(QCursor(QPixmap("./Resources/normal.png")));
    }
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值