diff --git a/CREDITS.md b/CREDITS.md
index 51c45f6c..1f51a83d 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -45,8 +45,8 @@ contributions are listed on the project's Members page.
The following libraries are dependencies of novelWriter:
-* **Qt5** by Qt Company
-* **PyQt5** by Riverbank Computing
+* **Qt6** by Qt Company
+* **PyQt6** by Riverbank Computing
* **Enchant** by Dom Lachowicz
* **PyEnchant** by Dimitri Merejkowsky
diff --git a/README.md b/README.md
index 3ac3c385..4f3e65f9 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ documentation.
## Implementation
-novelWriter is written with Python 3 (3.10+) using Qt5 and PyQt5 (5.15 only), and is released on
+novelWriter is written with Python 3 (3.10+) using Qt6 and PyQt6 (6.0+), and is released on
Linux, Windows and macOS. It can in principle run on any Operating System that also supports Qt,
PyQt and Python.
diff --git a/docs/source/tech_source.rst b/docs/source/tech_source.rst
index 9b100ebd..ad3d07c9 100644
--- a/docs/source/tech_source.rst
+++ b/docs/source/tech_source.rst
@@ -36,12 +36,11 @@ Everything else is handled with standard Python libraries.
The following Python packages are needed to run all features of novelWriter:
-* ``PyQt5`` – needed for connecting with the Qt5 libraries.
+* ``PyQt6`` – needed for connecting with the Qt6 libraries.
* ``PyEnchant`` – needed for spell checking (optional).
-PyQt/Qt must be at least 5.15.0. If you want spell checking, you must install the ``PyEnchant``
-package. The spell check library must be at least 3.0 to work with Windows. On Linux, 2.0 also
-works fine.
+If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
+must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
If you install from PyPi, these dependencies should be installed automatically. If you install from
source, dependencies can still be installed from PyPi with:
diff --git a/i18n/README.md b/i18n/README.md
index 1c5303a1..b45439dd 100644
--- a/i18n/README.md
+++ b/i18n/README.md
@@ -18,7 +18,7 @@ When contributing translations, keep the following things in mind.
* For descriptive labels and dialog boxes, make sure you do _not_ change the meaning of the text
when you translate it from English. The user must receive the same instructions or information
- regardless of language. This is improtant, otherwise the documentation will be inconsistent with
+ regardless of language. This is important, otherwise the documentation will be inconsistent with
the user interface and it will become a lot more difficult to handle user issues and questions.
* If you think a label or description is misleading or incomplete, please file an issue report. The
correct way to handle such changes is to change the text in the code first, which will then be
@@ -35,7 +35,7 @@ Linguist, or updating the translations for an already existing supported languag
There are two areas relevant to localisation:
-* The Qt5 GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the
+* The Qt GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the
translation work.
* The `project_XX.json` files. See [Project Localisation](#project-localisation) below.
@@ -43,7 +43,7 @@ The `XX` in the file name corresponds to the language and country code for the t
instance `en_GB` for British English.
-## Qt5 GUI Localisation
+## Qt GUI Localisation
You will need the translation tool Qt 5 Linguist on your system.
@@ -89,8 +89,7 @@ For instance, the French translation uses the language code `fr_FR`, so its tran
be `nw_fr_FR.ts`
Note: The `qtlupdate` command needs the `lupdate` tool provided by PyQt6, which uses the latest
-TS file format. The tool in PyQt5 generates an older file format. On Debian/Ubuntu it is provided
-by the package `pyqt6-dev-tools`.
+TS file format. On Debian/Ubuntu it is provided by the package `pyqt6-dev-tools`.
### Edit the Translation File in Qt Linguist
diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py
index a7fd61f5..6f6fc63e 100644
--- a/novelwriter/__init__.py
+++ b/novelwriter/__init__.py
@@ -117,7 +117,7 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
" --debug Print debug output. Includes --info.\n"
" --color Add ANSI colors to log output.\n"
" --meminfo Show memory usage information in the status bar.\n"
- " --style= Sets Qt5 style flag. Defaults to 'Fusion'.\n"
+ " --style= Sets Qt style flag. Defaults to 'Fusion'.\n"
" --config= Alternative config file.\n"
" --data= Alternative user data path.\n"
)
diff --git a/novelwriter/assets/text/credits_en.htm b/novelwriter/assets/text/credits_en.htm
index 30e6b9e0..60f5c41f 100644
--- a/novelwriter/assets/text/credits_en.htm
+++ b/novelwriter/assets/text/credits_en.htm
@@ -54,8 +54,8 @@ more contributions are listed on the project's Members page.
The following libraries are dependencies of novelWriter:
- - Qt5 by Qt Company
- - PyQt5 by Riverbank Computing
+ - Qt6 by Qt Company
+ - PyQt6 by Riverbank Computing
- Enchant by Dom Lachowicz
- PyEnchant by Dimitri Merejkowsky
diff --git a/novelwriter/common.py b/novelwriter/common.py
index 4731e82f..193f7c81 100644
--- a/novelwriter/common.py
+++ b/novelwriter/common.py
@@ -434,7 +434,7 @@ def describeFont(font: QFont) -> str:
def fontMatcher(font: QFont) -> QFont:
"""Make sure the font is the correct family, if possible. This
ensures that Qt doesn't re-use another font under the hood. The
- default Qt5 font matching algorithm doesn't handle well changing
+ default Qt font matching algorithm doesn't handle well changing
application fonts at runtime.
"""
info = QFontInfo(font)
diff --git a/novelwriter/config.py b/novelwriter/config.py
index 8e4cded1..232fcdf7 100644
--- a/novelwriter/config.py
+++ b/novelwriter/config.py
@@ -217,7 +217,7 @@ class Config:
# System and App Information
# ==========================
- # Check Qt5 Versions
+ # Check Qt Versions
self.verQtString = QT_VERSION_STR
self.verQtValue = QT_VERSION
self.verPyQtString = PYQT_VERSION_STR
diff --git a/novelwriter/gui/mainmenu.py b/novelwriter/gui/mainmenu.py
index 42d7048b..f477217e 100644
--- a/novelwriter/gui/mainmenu.py
+++ b/novelwriter/gui/mainmenu.py
@@ -1021,8 +1021,8 @@ class GuiMainMenu(QMenuBar):
self.aAboutNW.setMenuRole(QAction.MenuRole.AboutRole)
self.aAboutNW.triggered.connect(self.mainGui.showAboutNWDialog)
- # Help > About Qt5
- self.aAboutQt = self.helpMenu.addAction(self.tr("About Qt5"))
+ # Help > About Qt
+ self.aAboutQt = self.helpMenu.addAction(self.tr("About Qt"))
self.aAboutQt.setMenuRole(QAction.MenuRole.AboutQtRole)
self.aAboutQt.triggered.connect(self.mainGui.showAboutQtDialog)
diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py
index 12d8a971..9e10e3f3 100644
--- a/novelwriter/guimain.py
+++ b/novelwriter/guimain.py
@@ -92,8 +92,8 @@ class GuiMain(QMainWindow):
logger.info("OS: %s", CONFIG.osType)
logger.info("Kernel: %s", CONFIG.kernelVer)
logger.info("Host: %s", CONFIG.hostName)
- logger.info("Qt5: %s (0x%06x)", CONFIG.verQtString, CONFIG.verQtValue)
- logger.info("PyQt5: %s (0x%06x)", CONFIG.verPyQtString, CONFIG.verPyQtValue)
+ logger.info("Qt: %s (0x%06x)", CONFIG.verQtString, CONFIG.verQtValue)
+ logger.info("PyQt: %s (0x%06x)", CONFIG.verPyQtString, CONFIG.verPyQtValue)
logger.info("Python: %s (0x%08x)", CONFIG.verPyString, sys.hexversion)
logger.info("GUI Language: %s", CONFIG.guiLocale)
diff --git a/pkgutils.py b/pkgutils.py
index 8e0d5cbf..100db556 100755
--- a/pkgutils.py
+++ b/pkgutils.py
@@ -543,8 +543,8 @@ def buildTranslationAssets(args: argparse.Namespace | None = None) -> None:
try:
subprocess.call(["lrelease", "-verbose", *srcList])
except Exception as exc:
- print("Qt5 Linguist tools seem to be missing")
- print("On Debian/Ubuntu, install: qttools5-dev-tools pyqt5-dev-tools")
+ print("Qt Linguist tools seem to be missing")
+ print("On Debian/Ubuntu, install: qttools5-dev-tools")
print(str(exc))
sys.exit(1)
diff --git a/requirements-dev.txt b/requirements-dev.txt
index e2e3b1d0..8499c6e8 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -3,4 +3,3 @@ flake8-pep585
flake8-pyproject
flake8-annotations
isort
-pyqt5-stubs
diff --git a/requirements.txt b/requirements.txt
index b6d30310..7b7c4d39 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
-pyqt5>=5.15
+pyqt6>=6.0
pyenchant>=3.0.0
diff --git a/setup/description_pypi.md b/setup/description_pypi.md
index 336a2e1c..0221db8d 100644
--- a/setup/description_pypi.md
+++ b/setup/description_pypi.md
@@ -10,7 +10,7 @@ synchronisation tools. All text is saved as plain text files with a meta data he
project structure is stored in a single project XML file, and other meta data is primarily saved as
JSON files.
-The application is written with Python 3 (3.10+) using Qt5 and PyQt5 (5.10+). It is developed on
+The application is written with Python 3 (3.10+) using Qt6 and PyQt6 (5.10+). It is developed on
Linux, but should in principle work fine on other operating systems as well as long as dependencies
are met. It is regularly tested on Debian and Ubuntu Linux, Windows, and MacOS.
diff --git a/setup/iss_license.txt b/setup/iss_license.txt
index 068dbc70..fe023cb4 100644
--- a/setup/iss_license.txt
+++ b/setup/iss_license.txt
@@ -18,12 +18,12 @@ along with this program. If not, see .
Dependencies
-Qt5
+Qt6
Copyright: Qt Company
Website:
License: LGPL v3
-PyQt5 / PyQt5-sip
+PyQt6 / PyQt6-sip
Copyright: Riverbank Computing
Website:
License: GPL v3
diff --git a/setup/macos/build.sh b/setup/macos/build.sh
index 8cd47ce9..dc23601d 100755
--- a/setup/macos/build.sh
+++ b/setup/macos/build.sh
@@ -165,13 +165,13 @@ rm -rf share/{gtk-,}doc
rm -rf lib/python3.1
# Remove web engine
-rm lib/python3.*/site-packages/PyQt5/QtWebEngine* || true
-rm -r lib/python3.*/site-packages/PyQt5/Qt/translations/qtwebengine* || true
-rm lib/python3.*/site-packages/PyQt5/Qt/resources/qtwebengine* || true
-rm -r lib/python3.*/site-packages/PyQt5/Qt/qml/QtWebEngine* || true
-rm -r lib/python3.*/site-packages/PyQt5/Qt/plugins/webview/libqtwebview* || true
-rm lib/python3.*/site-packages/PyQt5/Qt/libexec/QtWebEngineProcess* || true
-rm lib/python3.*/site-packages/PyQt5/Qt/lib/libQt5WebEngine* || true
+rm lib/python3.*/site-packages/PyQt6/QtWebEngine* || true
+rm -r lib/python3.*/site-packages/PyQt6/Qt/translations/qtwebengine* || true
+rm lib/python3.*/site-packages/PyQt6/Qt/resources/qtwebengine* || true
+rm -r lib/python3.*/site-packages/PyQt6/Qt/qml/QtWebEngine* || true
+rm -r lib/python3.*/site-packages/PyQt6/Qt/plugins/webview/libqtwebview* || true
+rm lib/python3.*/site-packages/PyQt6/Qt/libexec/QtWebEngineProcess* || true
+rm lib/python3.*/site-packages/PyQt6/Qt/lib/libQt5WebEngine* || true
popd || exit 1
popd || exit 1