Saya menghabiskan liburan ini untuk belajar menulis aplikasi Qt. Saya baru saja membaca tentang Qt Designer beberapa jam yang lalu, yang membuat saya bertanya-tanya: apa yang digunakan orang-orang yang menulis aplikasi dunia nyata di Qt untuk mendesain GUI mereka? Sebenarnya, bagaimana orang mendesain GUI secara umum?
Saya, salah satunya, menemukan bahwa menulis kode dengan tangan secara konseptual lebih sederhana daripada menggunakan Qt Designer, meskipun untuk GUI Designer yang kompleks mungkin masuk akal. GUI yang besar mungkin dapat dilakukan menggunakan Designer, tetapi seiring waktu mereka mungkin menjadi sangat sulit untuk dikelola seiring dengan meningkatnya kompleksitas (ini hanya pendapat saya). Saya juga mengunduh kode sumber AmaroK untuk mengintip apa yang mereka lakukan, dan menemukan banyak panggilan ke addWidget () dan teman-teman, tetapi tidak ada file XML yang dibuat oleh Designer (selain: AmaroK harus menjadi aplikasi favorit saya) platform apa pun).
Lalu, apa cara yang "benar" untuk membuat GUI? Desainer atau kode? Mari kita, untuk pembahasan ini, pertimbangkan jenis GUI berikut:
- Dialog sederhana yang hanya perlu menerima masukan, menampilkan beberapa hasil, dan keluar. Mari kita asumsikan aplikasi yang mengambil URL YouTube dan mengunduh video ke hard disk pengguna. Jenis aplikasi yang kemungkinan besar akan digunakan oleh pemula.
- GUI tingkat menengah seperti, katakanlah, editor catatan tempel dengan beberapa item bilah alat / menu. Mari kita ambil contoh xPad ( http://getxpad.com/ ). Saya akan mengatakan sebagian besar aplikasi termasuk dalam kategori "utilitas".
- GUI yang sangat kompleks, seperti AmaroK atau OpenOffice. Anda tahu mereka ketika Anda melihatnya karena itu membuat mata Anda berdarah.
sumber
Dalam pengalaman saya dengan Qt Designer dan toolkit / alat UI lainnya:
Kompleksitas sering kali dapat ditangani dalam alat UI dengan memecah desain menjadi beberapa file UI. Sertakan grup kecil komponen logis di setiap file dan perlakukan setiap grup sebagai satu widget yang digunakan untuk membangun UI lengkap. Konsep widget yang dipromosikan Qt Designer dapat membantu dalam hal ini.
Saya belum menemukan bahwa skala proyek membuat perbedaan. Pengalaman Anda mungkin berbeda.
File yang dibuat dengan alat UI (saya kira Anda dapat menulisnya dengan tangan jika Anda benar-benar menginginkannya) seringkali dapat dimuat secara dinamis pada saat run-time (Qt dan GTK + keduanya menyediakan fitur ini). Ini berarti Anda dapat membuat perubahan tata letak dan mengujinya tanpa kompilasi ulang.
Pada akhirnya, saya pikir baik kode mentah dan alat UI bisa efektif. Ini mungkin sangat tergantung pada lingkungan, toolkit / UI-tool, dan tentu saja preferensi pribadi. Saya suka alat UI karena mereka membuat saya siap dan bekerja dengan cepat dan memungkinkan perubahan mudah nanti.
sumber
Organisasi tempat saya bekerja telah memindahkan aplikasi GUI-nya ke Qt beberapa tahun yang lalu. Menurut saya ada beberapa aspek yang perlu diperhatikan:
Pengalaman saya sendiri, yang kembali kira-kira. 4 tahun, menggunakan Qt3.3, adalah bahwa perilaku dinamis dalam dialog tidak mungkin diwujudkan di Designer.
sumber
Hanya untuk mengatakan saya telah menulis dan memelihara GUI yang kompleks di Qt tanpa menggunakan Qt Designer - bukan karena saya tidak suka Qt Designer, tetapi karena saya tidak pernah bekerja seperti itu.
Ini sebagian karena masalah gaya dan dari mana Anda berasal: ketika saya mulai menggunakan Qt, saya memiliki pengalaman buruk Dreamweaver dan Frontpage dan alat HTML visual lainnya, dan jauh lebih disukai menulis kode dengan HomeSite dan beralih ke Photoshop untuk tata letak yang rumit masalah.
Ada bahaya dengan IDE kode visual yang Anda coba pertahankan dalam alat visual, tetapi akhirnya harus mengubah kode juga - dengan cara yang tidak dipahami dengan baik.
Mempelajari pengembangan iPhone, misalnya, saya merasa frustasi untuk menekan benda visual 'ajaib' ('seret dari lingkaran kosong di inspektur Koneksi ke objek di jendela Pembuat Antarmuka ...') yang akan lebih sederhana (untuk saya) untuk memahami dalam kode lama biasa.
Semoga berhasil dengan Qt - ini adalah toolkit yang hebat, bagaimanapun Anda menggunakannya, dan Qt Creator sepertinya adalah IDE yang hebat.
sumber
Saya akan menambahkan bahwa salah satu alasan menggunakan desainer grafis adalah kurangnya manajer tata letak di Win32, misalnya. Hanya pemosisian absolut yang mungkin, dan melakukan itu dengan tangan akan menyebalkan.
Sejak saya beralih dari Delphi ke Java untuk aplikasi GUI (pada tahun 2002), saya tidak pernah menggunakan desainer lagi. Saya lebih suka manajer tata letak. Dan ya, Anda mendapatkan kode boilerplate, tetapi memindahkan objek pada desainer UI mungkin membutuhkan waktu sebanyak mengubah boilerplate. Plus, saya akan terjebak dengan IDE yang lambat; itu untuk kasus Java / C #, OK, sedangkan untuk Qt (terutama Qt4) tidak berlaku. Untuk Qt3, saya bertanya-tanya mengapa seseorang harus mengedit kode yang dihasilkan - bukankah mungkin untuk menambahkan kode di file lain? Untuk alasan apa?
Tentang kasus-kasus yang dibahas: 1) Hand Code GUI kemungkinan besar lebih cepat untuk menulis, setidaknya jika Anda tahu perpustakaan Anda. Jika Anda seorang pemula dan Anda tidak mengenal mereka, Anda dapat menghemat waktu dan belajar lebih sedikit dengan seorang desainer, karena Anda tidak perlu mempelajari API yang Anda gunakan. Tapi "belajar lebih sedikit" adalah faktor kuncinya, jadi dalam kedua kasus saya akan mengatakan GUI Kode Tangan.
2) Menu bar cukup mengganggu untuk menulis kode. Juga, pikirkan detail seperti akselerator dan sebagainya. Tetap saja, itu tergantung pada apa yang biasa Anda lakukan. Setelah beberapa waktu, mungkin akan lebih cepat untuk mengetik boilerplate itu daripada mengarahkan-dan-klik ke desainer untuk memperbaiki semua properti tersebut, tetapi hanya jika Anda benar-benar dapat mengetik seperti ke mesin tik (seperti admin yang mengetik perintah Unix lebih cepat daripada menggunakan GUI apa pun).
3) Saya akan memperluas jawaban untuk kasus # 2 menjadi yang ini. Perhatikan bahwa, untuk platform Win32, mungkin saja menggunakan desainer yang menghasilkan sumber daya Win32 mungkin lebih cepat memuat (tidak tahu tentang itu).
Namun, saya ingin menyebutkan masalah potensial dengan menggunakan Qt Designer di sana. Kasus dunia nyata: butuh beberapa detik (katakanlah 10) untuk memuat dialog Java yang kompleks (kotak dialog Preferensi untuk editor teks pemrogram) dengan banyak opsi. Perbaikan yang benar adalah memuat setiap tab hanya ketika programmer ingin melihatnya (saya menyadarinya setelah itu), dengan menambahkan metode terpisah ke setiap set preferensi untuk membangun GUI-nya.
Jika Anda mendesain semua tab dan pengalih tab bersama-sama dengan seorang desainer, dapatkah Anda melakukannya dengan mudah? Saya kira mungkin ada contoh serupa di mana GUI berkode tangan memberi Anda lebih banyak fleksibilitas, dan dalam aplikasi besar seperti itu, Anda cenderung membutuhkannya, bahkan jika hanya untuk tujuan pengoptimalan.
sumber
Salah satu manfaat utama menggunakan desainer untuk membuat GUI adalah programmer lain dapat mengubah atau memelihara formulir dan widget dengan mudah tanpa perlu mempelajari kode yang rumit.
sumber
Aneh bahwa Anda mengatakan kode penulisan lebih sederhana daripada memanipulasi objek dalam lingkungan grafis. Ini no-brainer.
Perancang ada untuk membuat hidup Anda lebih mudah dan dalam jangka panjang membuat kode Anda lebih mudah dipelihara. Lebih mudah mencari desainer untuk melihat seperti apa UI Anda, kemudian membaca kode dan mencoba membayangkan seperti apa tampilannya.
Dengan Qt saat ini Anda dapat melakukan hampir semua hal dari dalam perancang dan sangat sedikit hal yang tidak dapat Anda lakukan, Anda dapat memperbaiki dengan sangat sedikit baris kode di konstruktor. Ambil contoh contoh paling sederhana - menambahkan koneksi slot sinyal. Menggunakan perancang itu sesederhana klik dua kali. Tanpa desainer Anda perlu mencari tanda tangan yang benar dari sinyal, mengedit file .h dan kemudian mengedit menulis kode Anda di file .cpp. Perancang memungkinkan Anda berada di atas detail ini dan fokus pada hal yang benar-benar penting - fungsionalitas aplikasi Anda.
sumber
Saya suka beralih ke desainer untuk mengembangkan widget GUI. Seperti yang disebutkan di posting lain, lebih cepat. Anda juga mendapatkan umpan balik langsung untuk melihat apakah itu "terlihat benar" dan tidak membingungkan pengguna. Desainer adalah alasan utama saya memilih Qt daripada toolkit lainnya. Saya kebanyakan menggunakan desainer untuk membuat dialog satu kali.
Karena itu, saya melakukan jendela utama dan widget kompleks apa pun dengan tangan. Saya pikir ini adalah cara yang dimaksudkan Trolltech. QFormLayout adalah kelas yang mereka sediakan untuk membuat dialog masukan dengan mudah melalui program.
Omong-omong, desainer di Qt 4 bukanlah IDE seperti yang mereka miliki di Qt 3. Ini hanya editor untuk mengedit file .ui. Saya suka seperti itu. IDE lintas platform baru akan disebut Qt Creator.
sumber
Ini adalah posting lama tapi saya akan menyarankan Anda untuk melihat Clementine - pemutar musik yang (menurut saya) berasal dari Amarok. Mereka menggunakan Qt4 dan dari apa yang saya lihat ada folder ui di folder src proyek. Dalam folder ui seperti yang diharapkan, mereka memiliki semua jenis file .ui. Jika Anda mengkompilasi dan menjalankan Clementine, Anda akan melihat bahwa GUI-nya cukup kompleks dan cukup bagus.
sumber
Bagi saya, itu tergantung seberapa banyak logika yang dikemas dalam widget / GUI. Jika ini hanya tentang bentuk sederhana, saya lebih suka menggunakan QtDesigner.
Jika itu berisi pemeriksaan atau interaksi yang rumit, saya cenderung memprogramnya.
sumber
Kami menggunakan Qt Designer jika ada yang perlu membuat Gui.
Masalahnya adalah membuat Widget kecil untuk tugas-tugas tertentu (seperti yang akan Anda lakukan dalam desain kelas) dan kemudian menggabungkannya menjadi "parent-gui".
Dengan cara ini widget Anda sangat dapat digunakan kembali dan dapat digunakan untuk Guis dengan cara modular. Anda hanya perlu menentukan sinyal mana yang dikirim setiap Widget dan slot mana yang mereka sediakan.
Kami juga membuat .ui-Files yang dapat dihasilkan selama proses pembangunan. Hingga saat ini tidak perlu mengedit file tersebut dengan tangan.
sumber
Buat bagian berbeda dari UI Anda
di file .ui yang berbeda menggunakan QtDesigner,
lalu satukan (dan tambahkan detail ) dalam kode.
Ada hal-hal yang tidak dapat Anda lakukan di Qt Designer, Anda hanya dapat melakukannya dalam kode,
jadi Qt Designer hanyalah salah satu bagian (hebat) dari rantai alat .
sumber