Apa yang harus dicari ketika memilih pustaka C ++ GUI lintas-platform?

8

Sebagai seorang programmer C ++ yang belajar, saya mencoba untuk memilih kerangka kerja GUI atau pustaka untuk proyek saya sendiri.

Saya memiliki beberapa pengalaman dengan Qt: sangat mudah, ia memiliki dokumentasi yang sangat bagus, dan menyediakan banyak alat, tetapi tampaknya menduplikasi banyak pustaka standar.

Apakah semua perpustakaan C ++ GUI seperti ini? Apa yang harus saya cari di perpustakaan GUI? Bagaimana cara menentukan mana yang terbaik untuk diberikan masalah tertentu? Haruskah saya fokus pada satu perpustakaan tertentu, atau apakah layak untuk mengenal beberapa dari mereka karena mereka dapat melayani tujuan yang berbeda?

BenjaminB
sumber
Juga, untuk referensi: stackoverflow.com/questions/4172398/…
Vitor Py

Jawaban:

6

Qt: ini sangat mudah,

Bukan sesuatu yang umumnya berlaku untuk gui libs, tetapi mekanisme sinyal / slot Qt adalah solusi yang cukup bagus

ini memiliki dokumentasi yang sangat bagus,

Qt dan WX keduanya menyediakan dokumen yang cukup bagus, baik referensi maupun tutorial

dan menyediakan banyak alat,

Qt membutuhkan alat, lib lain tidak memerlukan apa pun di luar kompiler biasa - terutama yang menggunakan tata letak jenis sizer bahkan tidak memerlukan editor gui.

tetapi tampaknya menduplikasi banyak perpustakaan standar.

Ini umum karena hanya beberapa tahun yang lalu Anda tidak dapat mengandalkan std lib dan STL hadir atau berfungsi pada semua platform. Bahkan hari ini hal ini selalu berlaku pada platform seluler. Seringkali meskipun Anda TIDAK HARUS menggunakan kelas koleksi mereka, atau Anda menemukan mereka plug kompatibel dengan yang stl

Bagaimana cara menentukan mana yang terbaik untuk diberikan masalah tertentu? "

Umumnya Anda memerlukan gui lib untuk melakukan masalah jenis aplikasi besar desktop standar atau antarmuka seluler / web yang sangat dapat dikonfigurasi. Seringkali gui lib memiliki rasa untuk keduanya, seperti Qt dan QWT

Martin Beckett
sumber
Duplikasi pustaka standar sering terjadi - termasuk wxWidgets, meskipun IIRC ada opsi untuk beralih menggunakan pustaka standar sekarang. Microsoft tidak serius tentang standar sampai mungkin versi Visual Studio 2003, di antara masalah lain.
Steve314
Jangan berpikir itu sepenuhnya benar sampai VS2008! Sudah beberapa tahun sejak saya menggunakan wx tetapi pada Qt kelas koleksi sekarang sepenuhnya dapat ditukar untuk stl. Mereka berdua masih menggunakan kelas string mereka sendiri - tetapi mengingat betapa miskinnya std :: string Anda dapat memaafkan itu!
Martin Beckett
Saya ragu itu sepenuhnya benar bahkan sekarang - kesempurnaan agak banyak untuk diminta. VC ++ 2003 sepertinya tidak masalah bagi saya, meskipun dengan beberapa nasties. Mungkin itu (semuanya lebih baik dari Visual C ++ 6) hal perspektif.
Steve314
@ Steve314 - ini menjadi jauh lebih baik di vc2008 dan sekarang vc2010. Sepertinya dengan merekrut tim C ++ msft yang gagap telah beralih dari "berfungsi untuk kita" dan "menambahkan fitur ke bahasa untuk memperbaiki aplikasi ini" untuk mencoba menjadi kompiler C ++ terbaik.
Martin Beckett
4

Apakah semua perpustakaan C ++ GUI seperti ini?

Jangan mencoba membungkus semuanya menjadi satu deskriptor. Akan selalu ada perpustakaan yang buruk atau bahkan tidak berdokumen. Mereka mungkin menemukan kembali roda 90% dari waktu atau menyediakan beberapa fungsi terobosan baru.

Apa yang harus saya cari di perpustakaan GUI?

Anda harus mencari perpustakaan yang memecahkan kebutuhan Anda dengan cara seefisien mungkin. Yang saya maksud dengan efisien adalah kombinasi antara kode-bijaksana dan kinerja. Jelas jika pustaka terlihat mengingatkan Perl Anda tidak ingin menggunakannya untuk kode produksi bahkan jika itu memberikan eksekusi sangat cepat. Sebaliknya Anda tidak menginginkan sesuatu yang sangat bertele-tele tetapi dengan kecepatan eksekusi yang terhambat.

Bagaimana cara menentukan mana yang terbaik untuk diberikan masalah tertentu?

Tidak selalu ada cara pasti untuk menentukan X apa yang terbaik untuk dilakukan Y . Jika Anda dapat menemukan beberapa jenis data yang tidak bias sehubungan dengan masalah Anda dan solusi yang ditawarkan oleh perpustakaan itu satu arah. Pengetahuan dan pengalaman juga merupakan cara terbaik untuk menentukan bagaimana solusi akan sesuai dengan kebutuhan Anda.

Haruskah saya fokus pada satu perpustakaan tertentu, atau apakah layak untuk mengenal beberapa dari mereka karena mereka dapat melayani tujuan yang berbeda?

Itu semata-mata tergantung pada apa yang Anda lakukan dan apa kebutuhan Anda. Jika Anda perlu bekerja pada X maka Anda perlu mempelajari perpustakaan terbaik untuk itu. Jika Anda hanya pernah mengerjakan satu hal dan Anda memiliki satu perpustakaan yang sesuai dengan kebutuhan Anda, mengapa repot-repot? *

* Catatan: Tidak ada salahnya untuk mengetahui lebih lanjut, saya hanya mengatakan dari sudut pandang murni "Menyelesaikan pekerjaan".


sumber
+1 "menyelesaikan pekerjaan". Anda dapat menghabiskan seumur hidup untuk meneliti lib GUI terbaik untuk proyek khusus Anda, dan pada akhirnya Anda mungkin hanya akan memilih satu yang sedikit lebih baik (jika sama sekali) daripada Anda akan memilih dari pemeriksaan yang cukup dangkal dari beberapa yang paling populer. Secara pribadi, saya tahu cukup wxWidgets bahwa saya tidak akan repot-repot meneliti apa pun selama saya dapat mengontrol GUI yang saya gunakan - QT atau GTK mungkin dapat diperlakukan dengan cara yang sama, dengan asumsi menggunakannya di Windows tidak besar Sepakat. Jika ada, saya ingin tahu tentang perpustakaan FLTK yang ringan.
Steve314
2

Bagaimana cara menentukan mana yang terbaik untuk diberikan masalah tertentu?

Setelah melakukan lusinan port GUI dan aplikasi GUI lintas-platform sejak 1989, saya telah menemukan pertanyaan pertama yang harus selalu Anda putuskan adalah tampilan dan nuansa . Pustaka GUI lintas platform berjalan di sepanjang spektrum dengan cara itu.

Tampilan dan rasa yang serupa di mana-mana

Ini berfungsi baik jika perangkat lunak Anda ditujukan untuk orang-orang yang harus sering mengganti platform, dan ingin perangkat lunak mereka berperilaku identik di mana-mana. Ini umum dalam beberapa aplikasi ilmiah, di mana Anda mungkin orang Linux yang mengunjungi lab Mac, atau seseorang memberi Anda satu ton Windows boxen sebagai bagian dari hibah.

Contoh perpustakaan seperti itu adalah Tk dan GTK +.

Platform terlihat dan terasa asli di mana-mana

Ini jauh lebih baik untuk aplikasi komersial dan pengguna non-teknis, karena orang-orang itu jauh lebih tertarik pada antarmuka pengguna yang akrab. Bahkan, mereka cenderung menolak untuk menggunakan perangkat lunak yang tidak memiliki tampilan dan rasa asli.

Contoh perpustakaan seperti itu adalah wxWidgets, RealBasic, Cocotron, dan Qt.


Setelah Anda membuat keputusan itu, maka Anda dapat mulai melihat domain masalah Anda secara lebih rinci dan menentukan toolkit mana yang paling cocok.

Bob Murphy
sumber
Tidak mungkin mengatur tampilan & nuansa sekali dan untuk semua dengan wxWidgets atau Qt?
BenjaminB
Ingatan saya adalah bahwa wxWidgets adalah pembungkus di sekitar platform asli sistem UI, jadi saya rasa tidak. Saya tidak yakin tentang Qt. Mereka digunakan untuk meniru tampilan dan nuansa widget asli, sehingga Anda bisa mengubahnya untuk meniru platform yang berbeda. Tapi saya tidak yakin apa yang mereka lakukan sekarang. Bagaimanapun, pengalaman saya sebagian besar dengan mengembangkan untuk penggunaan komersial oleh pelanggan non-teknis, di mana tampilan dan nuansa non-pribumi adalah hal yang buruk. Misalnya, setiap kali saya menyalakan git gui berbasis Tk, saya merasa sedikit menggelegar karena tidak peduli platform apa yang saya gunakan, kelihatannya salah.
Bob Murphy
Baik wx dan qt baik menggunakan widget asli atau menggambar widget tampak asli jika tidak ada, keduanya mendukung tema sehingga terlihat asli.
Martin Beckett
2

Di bawah aspek teknis Anda harus melihat dari dekat perizinan. Qt hanya gratis untuk pengembangan sumber terbuka non komersial. Jika Anda mulai menggunakannya di bidang lain seperti pekerjaan kontrak, Anda harus memastikan bahwa Anda dan pelanggan atau perusahaan Anda dapat menggunakannya dan bahwa biayanya dapat diterima oleh semua pihak yang terlibat.

sunting: Seperti yang dikatakan Raphael, saya salah tentang lisensi Qt. Namun saya pikir ini adalah bagian penting dari proses pengambilan keputusan untuk perpustakaan GUI yang mungkin ingin digunakan seseorang, untuk memastikan bahwa ia dapat melakukan ini dengan cara yang legal.

thorsten müller
sumber
Lisensi telah berubah. Selama Anda tidak memodifikasi sumber Qt, Anda dapat menggunakannya secara gratis bahkan pada aplikasi komersial dan sumber tertutup.
Raphael
1

Selain dari segi teknis pilihan, poin lain adalah ketersediaan pengembang dengan pengetahuan tentang alat yang dipilih, untuk masa pakai produk. Ini harus menjadi pendorong utama dalam memilih semua alat pengembangan di dunia komersial. Jika itu hanya untuk Anda, maka lakukan apa yang Anda inginkan, namun jika tidak, tetap pada alat yang diketahui pengembang, ingin tahu, dan yang terkenal. Jauh lebih mudah untuk merekrut kontraktor atau karyawan untuk aplikasi Java / Swing atau C ++ / QT daripada aplikasi ADA / (isi toolkit GUI yang belum pernah Anda dengar di sini).

Apakah toolkit yang Anda pilih "memajukan karier" untuk Anda dan semua orang, atau apakah itu merupakan kewajiban pada resume?

mattnz
sumber
Saya tidak bertanggung jawab atas apa pun kecuali diri saya sendiri. Jadi itu hanya untuk proyek pribadi saya dan resume saya!
BenjaminB