1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QBitmap>
#include <QImage>
#include <QPainter>
#include <QKeyEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPixmap pix(":/data/monkey_on_64x64.png");
QImage mask(16, 16, QImage::Format_MonoLSB);
QImage bw(16, 16, QImage::Format_MonoLSB);
mask.fill(0);
bw.fill(0);
for (int x = 0; x < 16; x++) {
bw.setPixel(x, x, 1);
bw.setPixel(x, 15 - x, 1);
mask.setPixel(x, x, 1);
mask.setPixel(x, 15 - x, 1);
if (x > 0 && x < 15) {
mask.setPixel(x - 1, x, 1);
mask.setPixel(x + 1, x, 1);
mask.setPixel(x - 1, 15 - x, 1);
mask.setPixel(x + 1, 15 - x, 1);
}
}
ccurs = QCursor(pix);
bcurs = QCursor(QBitmap::fromImage(bw), QBitmap::fromImage(mask));
ui->label->setCursor(ccurs);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(toggleOverrideCursor()));
timer->start(2000);
override = 0;
}
MainWindow::~MainWindow()
{
delete timer;
delete ui;
}
void MainWindow::toggleOverrideCursor()
{
switch (override) {
case 0:
QApplication::setOverrideCursor(Qt::BusyCursor);
break;
case 1:
QApplication::restoreOverrideCursor();
break;
case 2:
ui->label->grabMouse(Qt::ForbiddenCursor);
break;
case 3:
case 5:
ui->label->releaseMouse();
break;
case 4:
ui->label->grabMouse();
break;
case 6:
ui->label->setCursor(bcurs);
break;
case 7:
ui->label->setCursor(ccurs);
break;
}
override = (override + 1) % 8;
}
void MainWindow::keyPressEvent(QKeyEvent* event)
{
QPoint off(0, 0);
switch (event->key()) {
case Qt::Key_Up:
off.setY(-4);
break;
case Qt::Key_Down:
off.setY(4);
break;
case Qt::Key_Left:
off.setX(-4);
break;
case Qt::Key_Right:
off.setX(4);
break;
default:
return QMainWindow::keyPressEvent(event);
}
off += QCursor::pos();
QCursor::setPos(off);
}
|