Skip to content
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

Qt6 support #2464

Closed
8 tasks done
Tracked by #3223
karliss opened this issue Nov 7, 2020 · 10 comments
Closed
8 tasks done
Tracked by #3223

Qt6 support #2464

karliss opened this issue Nov 7, 2020 · 10 comments
Labels
Qt Issues and pull-requests regarding or caused-by the underlying Qt toolkit.
Milestone

Comments

@karliss
Copy link
Member

karliss commented Nov 7, 2020

Useful links

Known issues and and things that will require changes in code

  • setup CI build
  • Ghidra build
  • update python binding related code
  • deal with remaining deprecation warnings
  • Qt::TextBypassShaping removed after being deprecated for a while. Not sure why we needed it. Just to get things building probably can be removed, there might be some issue for non ascii scripts. PR removing it might give some information qt/qtbase@ee2ad9d
  • QRegExp has been completely removed in favor of QRegularExpression . Looks like all the direct uses of it in Cutter have already been updated. but there are some indirect use related to QSortFilterProxyModel . Unfortunately QRegularExpression based API for it was only added in Qt 5.12. More QT6 compatibility changes #2662
  • Crash when exiting
  • https://bugreports.qt.io/browse/QTBUG-88259 , patch pending , fixed in rc1
@karliss karliss added the Qt Issues and pull-requests regarding or caused-by the underlying Qt toolkit. label Nov 7, 2020
@xarkes
Copy link
Member

xarkes commented Feb 13, 2021

I think this issue can be closed now?

@karliss
Copy link
Member Author

karliss commented Feb 13, 2021

@xarkes why? The first two issues aren't fixed so I don't think it's possible to compile using Qt6 yet.

@xarkes
Copy link
Member

xarkes commented Feb 13, 2021

My bad, I thought the PR addressed everything :)

@karliss
Copy link
Member Author

karliss commented Apr 14, 2021

Noticed this when testing:
image

Part of window isn't drawn and remains transparent even when I move window around. Problem diapers after I move the window to different display. Doesn't happen with Cutter Qt5. Similar effect happens when I run OBS on my system, but it uses QT5. Doesn't happen when starting with QT_QPA_PLATFORM=xcb. Probably QT wayland backend bug, but it's weird that with Cutter it only happens when using Qt6, but for some Qt programs it also affects Qt5.

@karliss
Copy link
Member Author

karliss commented Apr 14, 2021

Crash when closing. Maybe Cutter is incorrectly intercepting.

log
0x00007ffff6e4c140 in QScreen::availableGeometry() const () from /usr/lib/libQt6Gui.so.6
(gdb) bt
#0  0x00007ffff6e4c140 in QScreen::availableGeometry() const () at /usr/lib/libQt6Gui.so.6
#1  0x00007ffff7900d65 in  () at /usr/lib/libQt6Widgets.so.6
#2  0x00007ffff7904e60 in QMessageBox::showEvent(QShowEvent*) () at /usr/lib/libQt6Widgets.so.6
#3  0x00007ffff76da4ae in QWidget::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6
#4  0x00007ffff7901b90 in QMessageBox::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6
#5  0x00007ffff76826a5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#6  0x00007ffff681baca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6
#7  0x00007ffff76d6c78 in QWidgetPrivate::show_helper() () at /usr/lib/libQt6Widgets.so.6
#8  0x00007ffff76d9fe5 in QWidgetPrivate::setVisible(bool) () at /usr/lib/libQt6Widgets.so.6
#9  0x00007ffff78d6d28 in QDialog::setVisible(bool) () at /usr/lib/libQt6Widgets.so.6
#10 0x00007ffff78d67b7 in QDialog::exec() () at /usr/lib/libQt6Widgets.so.6
#11 0x00007ffff79039af in  () at /usr/lib/libQt6Widgets.so.6
#12 0x000055555575b76d in MainWindow::closeEvent(QCloseEvent*) ()
#13 0x00007ffff76da4ae in QWidget::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6
#14 0x00005555557638cc in MainWindow::event(QEvent*) ()
#15 0x00007ffff76826a5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#16 0x00007ffff681baca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6
#17 0x00007ffff76d5636 in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) () at /usr/lib/libQt6Widgets.so.6
#18 0x00007ffff76eb7ff in  () at /usr/lib/libQt6Widgets.so.6
#19 0x00007ffff76efcde in  () at /usr/lib/libQt6Widgets.so.6
#20 0x00007ffff76826a5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#21 0x00007ffff681baca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6
#22 0x00007ffff6e1e0df in QGuiApplicationPrivate::processCloseEvent(QWindowSystemInterfacePrivate::CloseEvent*) () at /usr/lib/libQt6Gui.so.6
#23 0x00007ffff6e5eca5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Gui.so.6
#24 0x00007ffff72c32b1 in  () at /usr/lib/libQt6Gui.so.6
#25 0x00007ffff433d02c in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#26 0x00007ffff4390b59 in  () at /usr/lib/libglib-2.0.so.0
#27 0x00007ffff433a781 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#28 0x00007ffff6a60c8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#29 0x00007ffff682802c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#30 0x00007ffff6823f73 in QCoreApplication::exec() () at /usr/lib/libQt6Core.so.6
#31 0x00005555556a5f58 in main ()

@xarkes xarkes mentioned this issue Sep 20, 2021
3 tasks
@cg9999
Copy link

cg9999 commented Sep 21, 2021

Qt::TextBypassShaping seems to be only for performance optimization. see x64dbg/x64dbg@76c8834

@XVilka XVilka mentioned this issue Feb 7, 2023
3 tasks
@XVilka
Copy link
Member

XVilka commented Feb 7, 2023

There is no easy 5&6-compatible way to deal with QVariant::type()->QVariant::typeId() (and corresponding conversion to QMetaType unless we define some custom wrappers? There are many places where this is used and putting #ifdef everywhere looks ugly. Any better ideas?

@XVilka XVilka added this to the 2.3 milestone Feb 8, 2023
@XVilka
Copy link
Member

XVilka commented Jun 20, 2023

Qt6 builds should become default on macOS and Windows in the new release.

@XVilka
Copy link
Member

XVilka commented Aug 10, 2023

TODO: Test Wayland support

@XVilka XVilka mentioned this issue Jan 18, 2024
3 tasks
@karliss
Copy link
Member Author

karliss commented Jul 30, 2024

Marking the point crash as done, haven't seen that one in a while. Any new crashes are probably something else and needs details for repeating them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Qt Issues and pull-requests regarding or caused-by the underlying Qt toolkit.
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

4 participants