-
Notifications
You must be signed in to change notification settings - Fork 4
Migrate to Qt6 #140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate to Qt6 #140
Conversation
commit 2546626 Author: Samuel Ng <[email protected]> Date: Sun May 12 23:36:25 2024 -0700 ci: switch upload-artifact to latest version and remove ninja step because I think the cmake step already gets ninja commit 3a76a16 Author: Samuel Ng <[email protected]> Date: Sun May 12 23:21:52 2024 -0700 ci: build directory commit f784fc5 Author: Samuel Ng <[email protected]> Date: Sun May 12 23:00:43 2024 -0700 ci: fix build dir syntax commit 19d6cf0 Author: Samuel Ng <[email protected]> Date: Sun May 12 22:54:38 2024 -0700 ci: make it run in a build dir commit 9a33fa4 Author: Samuel Ng <[email protected]> Date: Sun May 12 22:33:15 2024 -0700 ci: change submodules to recursive commit 3a15d49 Author: Samuel Ng <[email protected]> Date: Sun May 12 22:24:59 2024 -0700 ci: make configure line into one line commit a81842f Author: Samuel Ng <[email protected]> Date: Sun May 12 22:15:36 2024 -0700 ci: switch run command to folded style commit b69576d Author: Samuel Ng <[email protected]> Date: Sun May 12 21:22:29 2024 -0700 ci: fix cmake command commit ebc61a2 Author: Samuel Ng <[email protected]> Date: Sun May 12 21:08:47 2024 -0700 ci: change boost version due to not supporting 1.85 commit 9bbd1c7 Author: Samuel Ng <[email protected]> Date: Sun May 12 21:01:47 2024 -0700 ci: try accessing qt env var by step id commit 2ab0c61 Author: Samuel Ng <[email protected]> Date: Sun May 12 20:55:19 2024 -0700 ci: initial try of windows build action
…ged to resolve deprecation warning
…Qt >= 6.3, made it conditional
…ged` caused older Qt6 versions to fail compilation, added compile guard
…causing Windows build to fail at launch
…licitly add all required dependencies for the benefit of having them when building locally using `necktos/act`
…well with Homebrew's Qt6
|
@Drewniok all of the macOS, Ubuntu, and Windows GitHub Actions seem to be working now. As part of the Qt6 migration I had simplified the CMake files because Qt6 has much better CMake support than Qt5, meaning that I no longer have to resort to the hacky qmake calls that existed before to appease the Windows build. You've contributed quite a few improvements to the CMake files but I'm not 100% certain that all of your contributions have been kept (I tried to manually reconcile the ones that I could spot). I don't want to take up too much of your time with this PR but it would just be great to hear whether you can 1. successfully build this version locally on your Mac and 2. take a skim at the CMake files that have been changed to make sure your improvements aren't lost in them. Thank you very much! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Migrate to Qt6 updates the codebase and build system to use Qt6 features and modern C++ standards, replacing deprecated Qt5 APIs. Key changes include:
- Replacing QRegExp with QRegularExpression and updating related matching patterns.
- Updating signal–slot connections, shortcut setups, and widget methods to conform with Qt6.
- Revising CMake configurations, workflows, and documentation to support Qt6 requirements.
Reviewed Changes
Copilot reviewed 55 out of 55 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/gui/widgets/input_field.cc | Commented out legacy validator instantiation and updated regex usage for Qt6. |
| src/gui/widgets/dialog_panel.cc | Updated logging output and error messaging to use Qt6 conventions. |
| src/gui/widgets/design_panel.cc | Revised signal–slot connections, event handling, and transform reset methods for Qt6. |
| src/gui/widgets/components/sim_job.{h,cc} | Migrated zip archive handling and regex pattern replacements to Qt6. |
| src/gui/widgets/components/plugin_engine.cc | Updated XML parsing and inner element comparisons for Qt6. |
| src/gui/commander.cc | Converted regex matching to QRegularExpression with global matching. |
| src/gui/application.cc | Adjusted shortcut syntax and XML element tests to align with Qt6 practices. |
| CMakeLists.txt & root CMakeLists.txt | Raised CMake minimum version, updated Qt package references, and modified plugin directory naming. |
| README.md | Updated Linux build instructions to reflect source-based compilation with Qt6. |
| .github/workflows/* | Revised CI workflows for Ubuntu, macOS, and Windows to install Qt6 and related dependencies. |
Comments suppressed due to low confidence (1)
src/gui/application.cc:371
- Using bitwise OR for shortcut combination is correct in Qt6; verify that this change is consistent with the rest of the shortcut implementations.
fit_items_in_view->setShortcut(Qt::CTRL | Qt::Key_Equal);
| // constructor | ||
| gui::Validator::Validator(QObject *parent) | ||
| : QRegExpValidator(parent) | ||
| { | ||
| // gui::Validator::Validator(QObject *parent) | ||
| // : QRegExpValidator(parent) | ||
| // { | ||
|
|
||
| } | ||
| // } | ||
|
|
||
| // destructor | ||
| gui::Validator::~Validator() | ||
| {} | ||
| // // destructor | ||
| // gui::Validator::~Validator() | ||
| // {} | ||
|
|
Copilot
AI
May 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Consider removing the commented-out validator constructor code if it is no longer needed to improve code clarity.
Copilot uses AI. Check for mistakes.
| QStringList list; | ||
| int pos = 0; | ||
| while ((pos = rx.indexIn(*input, pos)) != -1) { | ||
| list << rx.cap(1); | ||
| pos += rx.matchedLength(); | ||
| } | ||
| for (QString item : list) { | ||
| input->remove(item); | ||
| auto it = rx.globalMatch(*input); | ||
| while (it.hasNext()) { | ||
| auto match = it.next(); | ||
| list << match.captured(1); |
Copilot
AI
May 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modifying the input string inside the regex match loop may lead to unexpected index shifts; consider collecting all matches first and applying removals afterward.
Copilot uses AI. Check for mistakes.
| Binary builds for Windows are available in the [Releases](https://github.com/retallickj/siqad/releases) page. Note that one of the first-party simulators, PoisSolver, is not available on Windows builds due to incompatibility of its dependencies. For more information, please refer to the [Windows installation](https://siqad.readthedocs.io/en/latest/getting-started/installation.html#windows) section in our official documentation. | ||
|
|
||
| For Linux, a Ubuntu PPA is available: | ||
| For Linux, our PPA is out of date. For now please compile from source. |
Copilot
AI
May 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Ensure that the Linux installation instructions are updated to clearly reflect the need for compiling from source with Qt6 support and revise related documentation links if needed.
Copilot uses AI. Check for mistakes.
Hi @samuelshng, Many thanks! 🙏 I will have a look asap! |
Checklist