commit 15f6540d7f1794fcadeb849ffa4030141b857f5b
parent d922690684b3ef221b21d362d1b2e1949319cdac
Author: Silas Brack <silasbrack@gmail.com>
Date: Sat, 27 Dec 2025 21:40:19 +0100
Migrate to Qt6
Diffstat:
20 files changed, 42 insertions(+), 58 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -14,22 +14,22 @@ if(CMAKE_VERSION VERSION_LESS "3.7.0")
endif()
# Add here any library you need
-find_package(Qt5 COMPONENTS Widgets Qml Quick Network REQUIRED)
-find_package(Qt5Keychain REQUIRED)
+find_package(Qt6 COMPONENTS Widgets Qml Quick Network REQUIRED)
+find_package(Qt6Keychain REQUIRED)
# Add the resource file as it *must* be compiled (also possible with
# qmake or manually with rcc)
# https://doc.qt.io/qt-5/resources.html
# https://doc.qt.io/qt-5/qtcore-cmake-qt5-add-resources.html
set(SOURCES main.cpp networkmanager.cpp) # A variable is needed as I guess it will add more sources inside
-qt5_add_resources(SOURCES qml.qrc)
+qt_add_resources(SOURCES qml.qrc)
add_executable(demo
${SOURCES}
)
# Add here any library you need
-target_link_libraries(demo Qt5::Widgets Qt5::Qml Qt5::Quick Qt5::Network qt5keychain)
+target_link_libraries(demo Qt6::Widgets Qt6::Qml Qt6::Quick Qt6::Network qt6keychain)
# Install the binary
install(TARGETS demo DESTINATION bin)
diff --git a/derivation_demo.nix b/derivation_demo.nix
@@ -1,7 +1,7 @@
{ lib
, stdenv
, cmake
-, qt5
+, qt6
, wrapQtAppsHook
, qtkeychain
}:
@@ -14,9 +14,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake wrapQtAppsHook ];
buildInputs = [
- qt5.qtbase
- qt5.qtdeclarative
- qt5.qtquickcontrols2
+ qt6.qtbase
+ qt6.qtdeclarative
+ qt6.qt5compat
qtkeychain
];
diff --git a/flake.nix b/flake.nix
@@ -18,7 +18,7 @@
pkgs = nixpkgs.legacyPackages.${system};
in
{
- default = pkgs.libsForQt5.callPackage ./derivation_demo.nix { };
+ default = pkgs.qt6Packages.callPackage ./derivation_demo.nix { };
}
);
@@ -31,11 +31,11 @@
default = pkgs.mkShell {
buildInputs = with pkgs; [
cmake
- libsForQt5.qt5.qtbase
- libsForQt5.qt5.qtdeclarative
- libsForQt5.qt5.qtquickcontrols2
+ qt6.qtbase
+ qt6.qtdeclarative
+ qt6.qt5compat
qtkeychain
- libsForQt5.wrapQtAppsHook
+ qt6Packages.wrapQtAppsHook
];
};
}
diff --git a/main.qml b/main.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Window 2.2
+import QtQuick
+import QtQuick.Window
Window {
id: mainWindow
diff --git a/networkmanager.cpp b/networkmanager.cpp
@@ -5,7 +5,7 @@
#include <QJsonArray>
#include <QUrlQuery>
#include <QDebug>
-#include <qt5keychain/keychain.h>
+#include <qt6keychain/keychain.h>
NetworkManager::NetworkManager(QObject *parent)
: QObject(parent)
diff --git a/qml/components/AttachmentPreview.qml b/qml/components/AttachmentPreview.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
ColumnLayout {
diff --git a/qml/components/Avatar.qml b/qml/components/Avatar.qml
@@ -1,4 +1,4 @@
-import QtQuick 2.5
+import QtQuick
import "../styles"
Item {
@@ -18,6 +18,7 @@ Item {
anchors.fill: parent
radius: size / 2
color: getColorForName(name)
+ clip: true
// Initials
Text {
@@ -36,23 +37,6 @@ Item {
source: imageSource
fillMode: Image.PreserveAspectCrop
smooth: true
-
- layer.enabled: true
- layer.effect: ShaderEffect {
- property variant source: parent
- fragmentShader: "
- varying highp vec2 qt_TexCoord0;
- uniform sampler2D source;
- uniform lowp float qt_Opacity;
- void main() {
- lowp vec4 tex = texture2D(source, qt_TexCoord0);
- highp vec2 center = vec2(0.5, 0.5);
- highp float dist = distance(qt_TexCoord0, center);
- lowp float alpha = smoothstep(0.5, 0.49, dist);
- gl_FragColor = vec4(tex.rgb, tex.a * alpha) * qt_Opacity;
- }
- "
- }
}
}
diff --git a/qml/components/ChatListItem.qml b/qml/components/ChatListItem.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
Rectangle {
diff --git a/qml/components/MessageBubble.qml b/qml/components/MessageBubble.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
Item {
diff --git a/qml/components/MessageInput.qml b/qml/components/MessageInput.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
Rectangle {
diff --git a/qml/components/TopBar.qml b/qml/components/TopBar.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
Rectangle {
diff --git a/qml/models/ChatListModel.qml b/qml/models/ChatListModel.qml
@@ -1,4 +1,4 @@
-import QtQuick 2.5
+import QtQuick
Item {
id: root
diff --git a/qml/models/MessageCache.qml b/qml/models/MessageCache.qml
@@ -1,4 +1,4 @@
-import QtQuick 2.5
+import QtQuick
// Singleton-like persistent message cache
QtObject {
diff --git a/qml/models/MessageListModel.qml b/qml/models/MessageListModel.qml
@@ -1,4 +1,4 @@
-import QtQuick 2.5
+import QtQuick
Item {
id: root
diff --git a/qml/styles/TelegramStyle.qml b/qml/styles/TelegramStyle.qml
@@ -1,5 +1,5 @@
pragma Singleton
-import QtQuick 2.5
+import QtQuick
QtObject {
// Colors (Telegram-inspired)
diff --git a/qml/views/ChatListView.qml b/qml/views/ChatListView.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../components"
import "../models"
import "../styles"
diff --git a/qml/views/LoginView.qml b/qml/views/LoginView.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../styles"
Item {
diff --git a/qml/views/MessageThreadView.qml b/qml/views/MessageThreadView.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../components"
import "../models"
import "../styles"
diff --git a/qml/views/ProfileView.qml b/qml/views/ProfileView.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../components"
import "../styles"
diff --git a/qml/views/SettingsView.qml b/qml/views/SettingsView.qml
@@ -1,5 +1,5 @@
-import QtQuick 2.5
-import QtQuick.Layouts 1.3
+import QtQuick
+import QtQuick.Layouts
import "../components"
import "../models"
import "../styles"