Mobil cihazlarda, gömülü dokunmatik panellerde ve modern masaüstü uygulamalarında binlerce satırlık listeleri (rehber, şarkı listesi, telemetri logları, ağ cihazları) parmak hareketleriyle kaydırırken en ufak bir takılma (jank/stutter) kullanıcı deneyimini doğrudan bozar. Bu tür akıcı arayüzlerde QML ListView C++ modeli entegrasyonu; QML’in esnek delegasyon tasarımını C++’ın sıfır ek yüklü bellek performansı ile harmanlayarak kusursuz 60 FPS […]
Modern kullanıcı arayüzlerinde (UI) statik ve keskin geçişler artık çağdışı kabul edilmektedir. Bir butona tıklandığında yumuşakça parlaması, açılır menülerin kayarak genişlemesi veya hata durumunda bir panelin kırmızıya dönüp titremesi kullanıcı deneyimini (UX) üst seviyeye taşır. Qt Quick dünyasında QML animasyonlar ve states mimarisi, GPU hızlandırmalı motoru sayesinde minimum kodla pürüzsüz 60 FPS görsel geçişler tasarlamanıza […]
Qt Quick ile proje geliştirirken en ideal mimari prensip: “Arayüz QML’de, İş Mantığı ve Donanım Erişimi C++’ta” kuralıdır. QML görsel akıcılıkta rakipsizken; yüksek hesaplama gücü, seri port/CAN bus donanım haberleşmesi ve veritabanı erişimi C++’ın uzmanlık alanıdır. Bu iki dünyayı birbirine bağlayan köprü olan C++ ve QML entegrasyonu, projenin performansını ve kod kalitesini belirleyen en kritik […]
Geleneksel C++ Qt Widgets mimarisi kurumsal masaüstü yazılımlarında mükemmel olsa da, akıllı telefonlar, dokunmatik gömülü ekranlar (IoT cihazları) ve akıcı animasyonlar söz konusu olduğunda yerini bildirimsel (declarative) Qt Quick mimarisine bırakır. JSON ve JavaScript benzeri modern sözdizimiyle QML temelleri ve property binding yapısı, arayüz tasarımını bir HTML/CSS sayfası yazar gibi zahmetsiz ve reaktif (reactive) hale […]
Standart bir Qt Widgets uygulaması varsayılan olarak işletim sisteminin yerel (genellikle açık gri veya beyaz) sistem paletini kullanır. Ancak günümüz modern yazılımlarında kullanıcıların göz yorgunluğunu azaltan ve estetik bir çekicilik sunan koyu temalar standart bir beklentidir. Web geliştirmedeki CSS mantığını C++ masaüstü dünyasına taşıyan Qt Style Sheets karanlık tema mimarisi (QSS), tek bir stil dosyası […]
Qt GUI uygulamalarında tablo ve listelerle çalışırken acemi geliştiricilerin düştüğü en büyük tuzak QTableWidget kullanmaktır. 10.000 veya 100.000 satırlık bir veri kümesini QTableWidget içerisine tek tek QTableWidgetItem nesneleri olarak eklemeye kalktığınızda, yüz binlerce C++ nesnesi oluşturulur, bellek tükenir ve arayüz saniyelerce donar. Kurumsal ve yüksek performanslı uygulamalarda Qt Model View mimarisi kullanmak; veriyi arayüzden tamamen […]
Qt Framework’ün sunduğu standart butonlar, etiketler ve kaydırma çubukları genel masaüstü yazılımları için fazlasıyla yeterlidir. Ancak endüstriyel otomasyon arayüzleri, telemetri ekranları veya otomotiv panelleri geliştirirken dairesel hız göstergeleri (gauge), dalga formu monitörleri veya özel durum ışıkları tasarlamanız gerekir. Bu tür ileri düzey grafiksel gereksinimlerde QPainter ile custom widget oluşturmak, piksel düzeyinde tam kontrol ve yüksek […]
Masaüstü ve gömülü Qt uygulamalarında kullanıcı tercihlerinin (son açılan pencere konumu, seçilen seri port, dil seçeneği veya koyu tema tercihi) uygulama kapatılıp açıldığında korunması profesyonel bir kullanıcı deneyiminin vazgeçilmezidir. Qt Framework’ün platformlar arası bir yapılandırma yöneticisi sunan sınıfı QSettings kullanımı, geliştiricileri her işletim sistemi için ayrı dosya formatı ve dizin yapısı tasarlama zahmetinden kurtarır. Bu […]
Modern masaüstü uygulamalarının hemen hemen tamamı bulut servisleri, uzaktan veri tabanları veya IoT cihazlarıyla iletişim kurmak için web API’lerinden faydalanır. Qt ekosisteminde HTTP/HTTPS protokolleri üzerinden ağ istekleri gerçekleştirmek için kullanılan temel sınıf Qt REST API QNetworkAccessManager bileşenidir. QNetworkAccessManager, arka planda tamamen asenkron (bloke etmeyen) bir mimariyle çalışır. Yani bir web isteği gönderdiğinizde, yanıt gelene kadar […]
Gömülü sistemler dünyasında ESP32, STM32, Arduino veya Orange Pi gibi geliştirme kartlarıyla çalışırken, cihazdan toplanan sensör verilerini bilgisayarda gerçek zamanlı görselleştirmek veya cihaza komut göndermek en yaygın ihtiyaçtır. Bu köprüyü kurmanın en kararlı yolu Qt QSerialPort kullanımı ile masaüstü UART arayüzü geliştirmektir. Qt, platform bağımsız (Windows, Linux, macOS) çalışan QSerialPort ve QSerialPortInfo sınıfları sayesinde işletim […]