Telah menyikat C ++ saya akhir-akhir ini, di QQ Ubuntu. Saya suka kerangka Qt untuk semuanya, terutama membangun GUI. Saya menjadi cukup akrab dengannya ketika menggunakan PyQt selama beberapa tahun terakhir.
Ketika menggunakan PyQt, saya memiliki beberapa masalah yang sekarang lebih jelas ketika menggunakan C ++ dengan Qt: Qt memiliki banyak ekstensi untuk C ++ yang spesifik Qt - QString menjadi hanya satu contoh umum, belum lagi pengumpulan sampah otomatis. Dimungkinkan untuk menulis aplikasi Qt menggunakan C ++ tanpa mengetahui banyak tentang C ++ dan STL.
Saya mungkin harus segera memasuki pasar kerja lagi dan saya ingin dapat mempertimbangkan posisi C ++ - tapi saya takut mengikat diri saya terlalu banyak ke Qt akan membatasi kemampuan saya untuk bekerja dengan C ++ generik, yang dulunya cukup tangguh tetapi sekarang lama tidak aktif dan berkarat.
Haruskah saya menghindari Qt? Apakah saya akan lebih baik menggunakan WxWidgets atau GTK ++ untuk membangun GUI?
Apa kerangka kerja GUI terbaik untuk digunakan yang memungkinkan / membutuhkan sebagian besar penggunaan generik C ++ dan STL? Bagaimana cara membuat saya paling berharga sebagai programmer C ++ ketika datang ke kerangka kerja GUI, dll?
Saya setuju dengan sebagian besar pujian tinggi dari Qt, tetapi pertanyaannya adalah Apa kerangka kerja GUI terbaik untuk digunakan yang memungkinkan / membutuhkan sebagian besar penggunaan C ++ generik dan STL? Dalam hal ini Qt sedikit skizofrenia: ia menduplikasi kontainer dan algoritma STL dengan tikungannya sendiri. Ini juga menyediakan wadah, yang berbeda dari STL. Interoperabilitas antara Qt dan STL tidak selalu mulus. Dalam beberapa kasus dibutuhkan beberapa fungsi panggilan untuk mendapatkan dari
std::string
keQString
dan kembali.wxWidgets memiliki opsi untuk membangun STL, yang menggunakan wadah STL secara eksklusif - tidak ada alam semesta paralel dengan penggantian yang ditanamkan di rumah seperti dalam kasus Qt. Itu juga mengkompilasi dengan kompiler C ++ standar tanpa memerlukan ekstensi non-standar. Ini adalah kerangka kerja GUI berkualitas yang patut dipertimbangkan.
Anda juga dapat melihat gtkmm, yang merupakan pembungkus C ++ di sekitar GTK +. Lebih dekat untuk memenuhi kebutuhan pertama Anda daripada Qt.
sumber
Saya tidak akan terlalu khawatir tentang tidak menggunakan perpustakaan STL tertentu seperti std :: string atau std :: iostream atau std :: vector. Setara-QT datang dalam rasa yang berbeda tetapi mereka tidak begitu jauh untuk membuat masalah.
Perbedaan yang lebih idiomatis menurut saya tampaknya adalah gaya pemrograman yang berat digunakan
new
untuk alokasi. Sementara untuk program QT ini mungkin baik untuk bagian Gui, manfaat dari C ++ dan RAII adalah, bahwa Anda benar-benar dapat menyimpan banyak data di stack daripada tumpukan. Saat beralih ke penulisan kode non-GUI, Anda harus mengingatnya.sumber
new/delete
panggilan manual ini tidak mudah dan rawan kesalahan. Di bagian kritis (menangani data besar) ini dapat membuat perbedaan, terutamadelete
panggilan bisa sangat lambat.