mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 00:05:25 +08:00
qt 6.5.1 original
This commit is contained in:
30
tests/manual/qcursor/grab_override/CMakeLists.txt
Normal file
30
tests/manual/qcursor/grab_override/CMakeLists.txt
Normal file
@ -0,0 +1,30 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## t_cursors Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_manual_test(t_cursors
|
||||
GUI
|
||||
SOURCES
|
||||
main.cpp
|
||||
mainwindow.cpp mainwindow.h mainwindow.ui
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Widgets
|
||||
ENABLE_AUTOGEN_TOOLS
|
||||
uic
|
||||
)
|
||||
|
||||
# Resources:
|
||||
set(images_resource_files
|
||||
"data/monkey_on_64x64.png"
|
||||
)
|
||||
|
||||
qt_internal_add_resource(t_cursors "images"
|
||||
PREFIX
|
||||
"/"
|
||||
FILES
|
||||
${images_resource_files}
|
||||
)
|
BIN
tests/manual/qcursor/grab_override/data/monkey_on_64x64.png
Normal file
BIN
tests/manual/qcursor/grab_override/data/monkey_on_64x64.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
12
tests/manual/qcursor/grab_override/grab_override.pro
Normal file
12
tests/manual/qcursor/grab_override/grab_override.pro
Normal file
@ -0,0 +1,12 @@
|
||||
TARGET = t_cursors
|
||||
TEMPLATE = app
|
||||
QT = core gui widgets
|
||||
|
||||
SOURCES += main.cpp\
|
||||
mainwindow.cpp
|
||||
|
||||
HEADERS += mainwindow.h
|
||||
|
||||
FORMS += mainwindow.ui
|
||||
|
||||
RESOURCES += images.qrc
|
6
tests/manual/qcursor/grab_override/images.qrc
Normal file
6
tests/manual/qcursor/grab_override/images.qrc
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE RCC>
|
||||
<RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file>data/monkey_on_64x64.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
16
tests/manual/qcursor/grab_override/main.cpp
Normal file
16
tests/manual/qcursor/grab_override/main.cpp
Normal file
@ -0,0 +1,16 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QApplication>
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
w.showFullScreen();
|
||||
#ifdef QT_KEYPAD_NAVIGATION
|
||||
QApplication::setNavigationMode(Qt::NavigationModeCursorForceVisible);
|
||||
#endif
|
||||
return a.exec();
|
||||
}
|
103
tests/manual/qcursor/grab_override/mainwindow.cpp
Normal file
103
tests/manual/qcursor/grab_override/mainwindow.cpp
Normal file
@ -0,0 +1,103 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#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:
|
||||
QGuiApplication::setOverrideCursor(Qt::BusyCursor);
|
||||
break;
|
||||
case 1:
|
||||
QGuiApplication::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);
|
||||
}
|
38
tests/manual/qcursor/grab_override/mainwindow.h
Normal file
38
tests/manual/qcursor/grab_override/mainwindow.h
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class QTimer;
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
private slots:
|
||||
void toggleOverrideCursor();
|
||||
|
||||
private:
|
||||
void keyPressEvent(QKeyEvent* event);
|
||||
|
||||
Ui::MainWindow *ui;
|
||||
QTimer *timer;
|
||||
int override;
|
||||
|
||||
QCursor ccurs;
|
||||
QCursor bcurs;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
97
tests/manual/qcursor/grab_override/mainwindow.ui
Normal file
97
tests/manual/qcursor/grab_override/mainwindow.ui
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>240</width>
|
||||
<height>320</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="midLineWidth">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Custom</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="midLineWidth">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="cursor">
|
||||
<cursorShape>ForbiddenCursor</cursorShape>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Forbidden</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="cursor">
|
||||
<cursorShape>WaitCursor</cursorShape>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Wait</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>240</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="mainToolBar">
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar"/>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Reference in New Issue
Block a user