mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-04-20 03:25:02 +00:00
feat: update Qt 5.15
This commit is contained in:
parent
66a357bfe2
commit
1b6a70245d
10 changed files with 55 additions and 65 deletions
4
.github/workflows/macos.yml
vendored
4
.github/workflows/macos.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
|||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
qt-ver: [5.12.6]
|
||||
qt-ver: [5.15.0]
|
||||
qt-arch-install: [clang_64]
|
||||
clang-arch: [x64]
|
||||
env:
|
||||
|
@ -31,7 +31,7 @@ jobs:
|
|||
path: ${{ env.qt-install-path }}/${{ matrix.qt-arch-install }}
|
||||
key: ${{ runner.os }}/${{ matrix.qt-ver }}/${{ matrix.qt-arch-install }}
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2.6.2
|
||||
uses: jurplel/install-qt-action@v2.7.1
|
||||
with:
|
||||
version: ${{ matrix.qt-ver }}
|
||||
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||
|
|
4
.github/workflows/ubuntu.yml
vendored
4
.github/workflows/ubuntu.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-16.04,ubuntu-18.04]
|
||||
qt-ver: [5.12.6]
|
||||
qt-ver: [5.15.0]
|
||||
qt-arch-install: [gcc_64]
|
||||
gcc-arch: [x64]
|
||||
env:
|
||||
|
@ -33,7 +33,7 @@ jobs:
|
|||
path: ${{ env.qt-install-path }}/${{ matrix.qt-arch-install }}
|
||||
key: ${{ runner.os }}/${{ matrix.qt-ver }}/${{ matrix.qt-arch-install }}
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2.6.2
|
||||
uses: jurplel/install-qt-action@v2.7.1
|
||||
with:
|
||||
version: ${{ matrix.qt-ver }}
|
||||
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||
|
|
21
.github/workflows/windows.yml
vendored
21
.github/workflows/windows.yml
vendored
|
@ -14,29 +14,30 @@ on:
|
|||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
# windows-latest目前是windows server 2019,选择2016是2016安装的是vs2017
|
||||
# windows-latest目前是windows server 2019
|
||||
# windows server 2019安装的是vs2019,windows server 2016安装的是vs2017
|
||||
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
|
||||
runs-on: windows-2016
|
||||
runs-on: windows-2019
|
||||
|
||||
# 矩阵配置 https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix
|
||||
strategy:
|
||||
matrix:
|
||||
qt-ver: [5.12.6]
|
||||
qt-arch: [win64_msvc2017_64, win32_msvc2017]
|
||||
qt-ver: [5.15.0]
|
||||
qt-arch: [win64_msvc2019_64, win32_msvc2019]
|
||||
# 配置qt-arch的额外设置msvc-arch,qt-arch-install
|
||||
include:
|
||||
- qt-arch: win64_msvc2017_64
|
||||
- qt-arch: win64_msvc2019_64
|
||||
msvc-arch: x64
|
||||
qt-arch-install: msvc2017_64
|
||||
- qt-arch: win32_msvc2017
|
||||
qt-arch-install: msvc2019_64
|
||||
- qt-arch: win32_msvc2019
|
||||
msvc-arch: x86
|
||||
qt-arch-install: msvc2017
|
||||
qt-arch-install: msvc2019
|
||||
# job env,所有steps都可以访问
|
||||
# 不同级别env详解 https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#env
|
||||
# 使用表达式语法${{}}访问上下文 https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions
|
||||
env:
|
||||
target-name: QtScrcpy
|
||||
vcvarsall-path: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
|
||||
vcvarsall-path: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
|
||||
qt-install-path: ${{ github.workspace }}/${{ matrix.qt-ver }}
|
||||
plantform-des: win
|
||||
# 步骤
|
||||
|
@ -50,7 +51,7 @@ jobs:
|
|||
# 安装Qt
|
||||
- name: Install Qt
|
||||
# 使用外部action。这个action专门用来安装Qt
|
||||
uses: jurplel/install-qt-action@v2.6.2
|
||||
uses: jurplel/install-qt-action@v2.7.1
|
||||
with:
|
||||
# Version of Qt to install
|
||||
version: ${{ matrix.qt-ver }}
|
||||
|
|
|
@ -116,9 +116,9 @@ QStringList AdbProcess::getDevicesSerialFromStdOut()
|
|||
{
|
||||
// get devices serial by adb devices
|
||||
QStringList serials;
|
||||
QStringList devicesInfoList = m_standardOutput.split(QRegExp("\r\n|\n"), QString::SkipEmptyParts);
|
||||
QStringList devicesInfoList = m_standardOutput.split(QRegExp("\r\n|\n"), Qt::SkipEmptyParts);
|
||||
for (QString deviceInfo : devicesInfoList) {
|
||||
QStringList deviceInfos = deviceInfo.split(QRegExp("\t"), QString::SkipEmptyParts);
|
||||
QStringList deviceInfos = deviceInfo.split(QRegExp("\t"), Qt::SkipEmptyParts);
|
||||
if (2 == deviceInfos.count() && 0 == deviceInfos[1].compare("device")) {
|
||||
serials << deviceInfos[0];
|
||||
}
|
||||
|
|
|
@ -50,24 +50,16 @@ void InputConvertNormal::mouseEvent(const QMouseEvent *from, const QSize &frameS
|
|||
|
||||
void InputConvertNormal::wheelEvent(const QWheelEvent *from, const QSize &frameSize, const QSize &showSize)
|
||||
{
|
||||
if (!from || 0 == from->delta()) {
|
||||
if (!from || from->angleDelta().isNull()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// delta
|
||||
qint32 hScroll = 0;
|
||||
qint32 vScroll = 0;
|
||||
switch (from->orientation()) {
|
||||
case Qt::Horizontal:
|
||||
hScroll = from->delta() / abs(from->delta()) * 2;
|
||||
break;
|
||||
case Qt::Vertical:
|
||||
vScroll = from->delta() / abs(from->delta()) * 2;
|
||||
break;
|
||||
}
|
||||
qint32 hScroll = from->angleDelta().x() / abs(from->angleDelta().x()) * 2;
|
||||
qint32 vScroll = from->angleDelta().y() / abs(from->angleDelta().y()) * 2;
|
||||
|
||||
// pos
|
||||
QPointF pos = from->posF();
|
||||
QPointF pos = from->position();
|
||||
// convert pos
|
||||
pos.setX(pos.x() * frameSize.width() / showSize.width());
|
||||
pos.setY(pos.y() * frameSize.height() / showSize.height());
|
||||
|
@ -279,7 +271,7 @@ AndroidKeycode InputConvertNormal::convertKeyCode(int key, Qt::KeyboardModifiers
|
|||
keyCode = AKEYCODE_0;
|
||||
break;
|
||||
case Qt::Key_1:
|
||||
case Qt::Key_Exclam:// !
|
||||
case Qt::Key_Exclam: // !
|
||||
keyCode = AKEYCODE_1;
|
||||
break;
|
||||
case Qt::Key_2:
|
||||
|
@ -289,11 +281,11 @@ AndroidKeycode InputConvertNormal::convertKeyCode(int key, Qt::KeyboardModifiers
|
|||
keyCode = AKEYCODE_3;
|
||||
break;
|
||||
case Qt::Key_4:
|
||||
case Qt::Key_Dollar://$
|
||||
case Qt::Key_Dollar: //$
|
||||
keyCode = AKEYCODE_4;
|
||||
break;
|
||||
case Qt::Key_5:
|
||||
case Qt::Key_Percent:// %
|
||||
case Qt::Key_Percent: // %
|
||||
keyCode = AKEYCODE_5;
|
||||
break;
|
||||
case Qt::Key_6:
|
||||
|
@ -313,53 +305,53 @@ AndroidKeycode InputConvertNormal::convertKeyCode(int key, Qt::KeyboardModifiers
|
|||
case Qt::Key_Space:
|
||||
keyCode = AKEYCODE_SPACE;
|
||||
break;
|
||||
case Qt::Key_Comma://,
|
||||
case Qt::Key_Less://<
|
||||
case Qt::Key_Comma: //,
|
||||
case Qt::Key_Less: //<
|
||||
keyCode = AKEYCODE_COMMA;
|
||||
break;
|
||||
case Qt::Key_Period://.
|
||||
case Qt::Key_Greater://>
|
||||
case Qt::Key_Period: //.
|
||||
case Qt::Key_Greater: //>
|
||||
keyCode = AKEYCODE_PERIOD;
|
||||
break;
|
||||
case Qt::Key_Minus://-
|
||||
case Qt::Key_Minus: //-
|
||||
case Qt::Key_Underscore: //_
|
||||
keyCode = AKEYCODE_MINUS;
|
||||
break;
|
||||
case Qt::Key_Equal://=
|
||||
case Qt::Key_Equal: //=
|
||||
keyCode = AKEYCODE_EQUALS;
|
||||
break;
|
||||
case Qt::Key_BracketLeft://[
|
||||
case Qt::Key_BraceLeft: //{
|
||||
case Qt::Key_BracketLeft: //[
|
||||
case Qt::Key_BraceLeft: //{
|
||||
keyCode = AKEYCODE_LEFT_BRACKET;
|
||||
break;
|
||||
case Qt::Key_BracketRight://]
|
||||
case Qt::Key_BraceRight: //}
|
||||
case Qt::Key_BracketRight: //]
|
||||
case Qt::Key_BraceRight: //}
|
||||
keyCode = AKEYCODE_RIGHT_BRACKET;
|
||||
break;
|
||||
case Qt::Key_Backslash:// \ ????
|
||||
case Qt::Key_Bar: //|
|
||||
case Qt::Key_Backslash: // \ ????
|
||||
case Qt::Key_Bar: //|
|
||||
keyCode = AKEYCODE_BACKSLASH;
|
||||
break;
|
||||
case Qt::Key_Semicolon://;
|
||||
case Qt::Key_Colon: //:
|
||||
case Qt::Key_Semicolon: //;
|
||||
case Qt::Key_Colon: //:
|
||||
keyCode = AKEYCODE_SEMICOLON;
|
||||
break;
|
||||
case Qt::Key_Apostrophe://'
|
||||
case Qt::Key_QuoteDbl: //"
|
||||
case Qt::Key_Apostrophe: //'
|
||||
case Qt::Key_QuoteDbl: //"
|
||||
keyCode = AKEYCODE_APOSTROPHE;
|
||||
break;
|
||||
case Qt::Key_Slash:// /
|
||||
case Qt::Key_Question://?
|
||||
case Qt::Key_Slash: // /
|
||||
case Qt::Key_Question: //?
|
||||
keyCode = AKEYCODE_SLASH;
|
||||
break;
|
||||
case Qt::Key_At://@
|
||||
case Qt::Key_At: //@
|
||||
keyCode = AKEYCODE_AT;
|
||||
break;
|
||||
case Qt::Key_Plus://+
|
||||
case Qt::Key_Plus: //+
|
||||
keyCode = AKEYCODE_PLUS;
|
||||
break;
|
||||
case Qt::Key_QuoteLeft://`
|
||||
case Qt::Key_AsciiTilde://~
|
||||
case Qt::Key_QuoteLeft: //`
|
||||
case Qt::Key_AsciiTilde: //~
|
||||
keyCode = AKEYCODE_GRAVE;
|
||||
break;
|
||||
case Qt::Key_NumberSign: //#
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef DEVICE_H
|
||||
#define DEVICE_H
|
||||
|
||||
#include <QElapsedTimer>
|
||||
#include <QPointer>
|
||||
#include <QTime>
|
||||
|
||||
|
@ -116,7 +117,7 @@ private:
|
|||
// ui
|
||||
QPointer<VideoForm> m_videoForm;
|
||||
|
||||
QTime m_startTimeCount;
|
||||
QElapsedTimer m_startTimeCount;
|
||||
DeviceParams m_params;
|
||||
|
||||
GroupControlState m_controlState = GCS_FREE;
|
||||
|
|
|
@ -595,17 +595,13 @@ void VideoForm::mouseDoubleClickEvent(QMouseEvent *event)
|
|||
|
||||
void VideoForm::wheelEvent(QWheelEvent *event)
|
||||
{
|
||||
if (m_videoWidget->geometry().contains(event->pos())) {
|
||||
if (m_videoWidget->geometry().contains(event->position().toPoint())) {
|
||||
if (!m_device) {
|
||||
return;
|
||||
}
|
||||
QPointF pos = m_videoWidget->mapFrom(this, event->pos());
|
||||
/*
|
||||
QWheelEvent(const QPointF &pos, const QPointF& globalPos, int delta,
|
||||
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
|
||||
Qt::Orientation orient = Qt::Vertical);
|
||||
*/
|
||||
QWheelEvent wheelEvent(pos, event->globalPosF(), event->delta(), event->buttons(), event->modifiers(), event->orientation());
|
||||
QPointF pos = m_videoWidget->mapFrom(this, event->position().toPoint());
|
||||
QWheelEvent wheelEvent(
|
||||
pos, event->globalPosition(), event->pixelDelta(), event->angleDelta(), event->buttons(), event->modifiers(), event->phase(), event->inverted());
|
||||
emit m_device->wheelEvent(&wheelEvent, m_videoWidget->frameSize(), m_videoWidget->size());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ void Dialog::execAdbCmd()
|
|||
}
|
||||
QString cmd = ui->adbCommandEdt->text().trimmed();
|
||||
outLog("adb " + cmd, false);
|
||||
m_adb.execute(ui->serialBox->currentText().trimmed(), cmd.split(" ", QString::SkipEmptyParts));
|
||||
m_adb.execute(ui->serialBox->currentText().trimmed(), cmd.split(" ", Qt::SkipEmptyParts));
|
||||
}
|
||||
|
||||
QString Dialog::getGameScript(const QString &fileName)
|
||||
|
|
|
@ -241,7 +241,7 @@ There are several reasons listed as below according to importance (high to low).
|
|||
All the dependencies are provided and it is easy to compile.
|
||||
|
||||
### PC client
|
||||
1. Set up the Qt development environment on the target platform (Qt >= 5.12.0, vs >= 2017 (mingw not supported))
|
||||
1. Set up the Qt development environment on the target platform (Qt == 5.15.0, vs == 2017 (mingw not supported))
|
||||
2. Clone the project
|
||||
3. Open the project root directory all.pro with QtCreator
|
||||
4. Compile and run
|
||||
|
|
|
@ -240,7 +240,7 @@ Mac OS平台,你可以直接使用我编译好的可执行程序:
|
|||
尽量提供了所有依赖资源,方便傻瓜式编译。
|
||||
|
||||
### PC端
|
||||
1. 目标平台上搭建Qt开发环境(Qt >= 5.12.0, vs >= 2017 (**不支持mingw**))
|
||||
1. 目标平台上搭建Qt开发环境(Qt == 5.15, vs == 2017 (**不支持mingw**))
|
||||
2. 克隆该项目
|
||||
3. 使用QtCreator打开项目根目录all.pro
|
||||
4. 编译,运行即可
|
||||
|
|
Loading…
Add table
Reference in a new issue