Apa sudut berbahaya Qt? [Tutup]

10

Tidak ada yang sempurna di bawah matahari. Qt tidak terkecuali, dan memang memiliki batasan: kita tidak bisa menggunakan pixmaps di utas selain GUI, kita tidak bisa menggunakan QImage dengan format gambar 16-bit-per-channel, dll.

Situasi apa yang memaksa Anda merusak desain karena keterbatasan Qt?
Apa kebiasaan yang paling dibenci?
Keputusan desain mana yang harus dihindari seseorang saat menggunakan Qt dalam proyeknya?

tanaman merambat
sumber
Dapatkah Anda mengatakan itu Qt? Jika Anda memperluas ke "Q Toolkit", Anda dapat menambahkan "yang" di depannya, tapi itu benar / baik-praktek untuk mengatakan yang Qt? Hanya penasaran.
Anto
@Anto: Saya kira, theterikat ke cornerssini, tidak Qt, tapi itu hanya perasaan intuitif saya, karena saya orang Rusia :)
tanaman merambat
Salah satu kemungkinan kurva berbahaya adalah bahwa proyek tersebut mungkin mengalami kesulitan keuangan. Baru-baru ini Nokia menandatangani perjanjian dengan Microsoft (untuk menggunakan Win7 di ponsel mereka) yang membuat masa depan Qt goyah.
Peter Rowell
Saya sangat tertarik untuk mengetahui jawaban ini karena saya adalah noob untuk C ++ pemrograman visual: D
Shaheer
@ Vines: Bagaimana dengan "Apa sudut berbahaya QT?"
Chris

Jawaban:

12

Ironisnya, menurut saya kekuatan Qt juga salah satu kelemahannya. Ada begitu banyak konstruksi dan ekstensi yang kuat, kode yang Anda tulis di Qt mudah menjadi sangat mengakar dalam "cara Qt". Mencoba mengekstrak fungsionalitas ke dalam bahasa lain tidak hanya berarti menulis ulang, Anda perlu mengetahui banyak teknologi spesifik Qt.

Luasnya Qt berarti bahwa mempekerjakan pemrogram berarti berkomitmen pada seseorang dengan pengalaman Qt, atau pelatihan untuk keahlian itu. Mendapatkan kontraktor dalam dan hingga kecepatan lebih sulit daripada vanilla C ++.

Ketika Qt berubah dari 3.x ke 4.x, tim kami membutuhkan hampir 9 bulan untuk melakukan port, selama waktu itu sedikit fungsi baru ditambahkan. Anda berharap untuk mengganti biaya upgrade utama dalam peningkatan efisiensi pengembangan di sisa waktu. (Catatan, saya telah menghilangkan kelebihan Qt, yang juga ada banyak)

James Creasy
sumber
2
Port Qt3 ke Qt4 sulit bagi kebanyakan orang yang saya kenal. QML ini dan hal-hal serupa yang telah diperkenalkan di versi yang lebih baru membuat saya khawatir, karena itu bisa berarti sekali lagi port yang rumit datang.
Vitor Py
10

Qt tidak menggunakan pustaka C ++ standar , tetapi memiliki QString, QVector, QMap, ...

Ini berarti Anda harus membuat keputusan desain yang penting: bagian mana dari aplikasi yang akan menggunakan QString dan bagian mana yang akan menggunakan std :: string?

Menggunakan std :: string di beberapa bagian dan QString di bagian lain, berarti Anda harus mengonversi antara QString dan std :: string pada batas.

Untuk menghindari overhead itu, orang dapat memutuskan untuk menggunakan QString di seluruh aplikasi Anda. Tapi itu membuatnya lebih sulit untuk menggunakan perpustakaan pihak ke-3 yang tidak didasarkan pada Qt, misalnya meningkatkan.

(Perhatikan bahwa hal yang sama berlaku untuk std :: map vs QMap, std :: vector vs QVector, dan sebagainya)

Memutuskan bagian mana yang menggunakan tipe Qt dan bagian mana yang menggunakan STL adalah keputusan desain utama, dengan implikasi besar. Dan hanya karena Qt menolak untuk menggunakan perpustakaan C ++ standar.

IMHO, keputusan itu bisa berjalan baik, tergantung pada proyeknya. Jadi saya tidak bisa menjawab pertanyaan Anda mana yang harus dihindari.

Sjoerd
sumber
1
Saya setuju, tapi saya akan pergi keluar dan mengatakan bahwa QString (dll) juga merupakan salah satu kekuatan karena sangat bagus untuk bekerja dengan mereka.
Johan
1
Juga, tidak terlalu sulit untuk menggunakan perpustakaan yang tidak menggunakan QString. Ada metode sederhana untuk mengkonversi QString ke std :: string dan sebaliknya. Tidak banyak.
@ Allen Nelson: Ya, saat ini ada fungsi konversi untuk QString; sangat bermanfaat dan nyaman! Tetapi terutama untuk QVector dan QMap akan ada overhead dalam mengkonversi (dan solusi sederhana tidak akan bekerja untuk misalnya QVector <QString>); Overhead yang harus dipertimbangkan selama desain untuk menghindari masalah kinerja di telepon.
Sjoerd
3

Ini tidak secara langsung menjawab pertanyaan, tetapi saya pikir itu layak disebutkan: mungkin aspek Qt yang paling 'berbahaya' adalah bahwa Nokia telah tidur dengan MSoft ...

Vektor
sumber
2
Tetapi mereka meninggalkan Qt untuk melakukannya.
Martin Beckett
1
Demi kelengkapan - Bagian komersial Qt sekarang dimiliki oleh Digia, sedangkan Qt telah pindah ke sistem "pemerintahan terbuka" di mana orang lain dapat dengan mudah berkontribusi. Ada juga yayasan KDE Free Qt yang melindungi Qt dari sumber tertutup.
Vishesh Handa
2

Baru-baru ini saya menemukan bahwa QChar, terlepas dari namanya, sebenarnya tidak sesuai dengan satu karakter tetapi dengan unit kode UTF-16. Dengan demikian, ketika Anda ingin memindai karakter teks Unicode sewenang-wenang, Anda harus menambahkan algoritma untuk berurusan dengan pengganti tinggi dan rendah, menggabungkan karakter dan sejenisnya.

Sebastian Negraszus
sumber