From 1b6a70245dc7f46bfc7c96c3afc3b6c8f3b1d2dd Mon Sep 17 00:00:00 2001 From: rankun Date: Sat, 20 Jun 2020 09:31:43 +0800 Subject: [PATCH] feat: update Qt 5.15 --- .github/workflows/macos.yml | 4 +- .github/workflows/ubuntu.yml | 4 +- .github/workflows/windows.yml | 21 +++--- QtScrcpy/adb/adbprocess.cpp | 4 +- .../inputconvert/inputconvertnormal.cpp | 66 ++++++++----------- QtScrcpy/device/device.h | 3 +- QtScrcpy/device/ui/videoform.cpp | 12 ++-- QtScrcpy/dialog.cpp | 2 +- README.md | 2 +- README_zh.md | 2 +- 10 files changed, 55 insertions(+), 65 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4a4c0ea93..7e05e3d97 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -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 }} diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 4fea04e10..cd7e84624 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -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 }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7d5980557..834320b17 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -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 }} diff --git a/QtScrcpy/adb/adbprocess.cpp b/QtScrcpy/adb/adbprocess.cpp index 6d4980de2..ad1483527 100644 --- a/QtScrcpy/adb/adbprocess.cpp +++ b/QtScrcpy/adb/adbprocess.cpp @@ -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]; } diff --git a/QtScrcpy/device/controller/inputconvert/inputconvertnormal.cpp b/QtScrcpy/device/controller/inputconvert/inputconvertnormal.cpp index 3ad0dc9cc..adf0566e3 100644 --- a/QtScrcpy/device/controller/inputconvert/inputconvertnormal.cpp +++ b/QtScrcpy/device/controller/inputconvert/inputconvertnormal.cpp @@ -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: //# diff --git a/QtScrcpy/device/device.h b/QtScrcpy/device/device.h index 2463e0ab3..29d4b152d 100644 --- a/QtScrcpy/device/device.h +++ b/QtScrcpy/device/device.h @@ -1,6 +1,7 @@ #ifndef DEVICE_H #define DEVICE_H +#include #include #include @@ -116,7 +117,7 @@ public slots: // ui QPointer m_videoForm; - QTime m_startTimeCount; + QElapsedTimer m_startTimeCount; DeviceParams m_params; GroupControlState m_controlState = GCS_FREE; diff --git a/QtScrcpy/device/ui/videoform.cpp b/QtScrcpy/device/ui/videoform.cpp index 5185a98ce..20c9602a1 100644 --- a/QtScrcpy/device/ui/videoform.cpp +++ b/QtScrcpy/device/ui/videoform.cpp @@ -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()); } } diff --git a/QtScrcpy/dialog.cpp b/QtScrcpy/dialog.cpp index 2417e645f..e5f68279a 100644 --- a/QtScrcpy/dialog.cpp +++ b/QtScrcpy/dialog.cpp @@ -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) diff --git a/README.md b/README.md index ce1fae3cc..ea42b2341 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/README_zh.md b/README_zh.md index 7f116c552..5fb9c5e3a 100644 --- a/README_zh.md +++ b/README_zh.md @@ -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. 编译,运行即可