Adakah yang bisa menjelaskan cara kerja GUI dan kapan saya harus mulai menggunakannya? [Tutup]

16

Saya telah belajar C ++ selama sekitar satu bulan sekarang, dan sebelum saya melangkah lebih jauh, saya ingin menjernihkan pertanyaan yang membosankan ini yang terus saya miliki. Saya tahu apa itu GUI, tapi saya tidak benar-benar tahu cara kerjanya, dan mungkin contoh yang populer?

Meskipun saya tahu pemrograman baris perintah adalah dasar-dasarnya, saya pikir itu akan menyenangkan bermain-main dengan GUI.

Meskipun saya memiliki sekitar 3 juta pertanyaan lain, saya akan menyelamatkan mereka: D

David
sumber
1
baris terakhir membuat saya tersenyum :) +1 untuk itu
CyprUS

Jawaban:

28

Saya menggeneralisasi beberapa pustaka GUI tetapi pada level yang sangat tinggi konsep terpenting yang perlu Anda pahami adalah bahwa GUI dikendalikan oleh peristiwa .

Dalam aplikasi konsol, input pengguna Anda biasanya terjadi pada titik-titik tertentu yang Anda tetapkan. Anda meminta pengguna Anda, Anda menunggu inputnya, Anda menghitung sesuatu berdasarkan input itu. Salah satu perbedaan utama adalah bahwa input hanya terjadi di satu tempat, Anda membaca teks dari commandline ( stdindalam C ++).

Dalam aplikasi GUI Anda biasanya memiliki beberapa tempat di mana input dapat terjadi, misalnya tombol yang melakukan tindakan atau bidang teks yang berbeda. Di sinilah peristiwa ikut bermain. Misalnya, mengklik tombol memicu suatu peristiwa. Acara ini perlu ditangani oleh pengendali acara , yang biasanya hanya metode yang mengambil objek acara dan dipanggil ketika even tersebut dipicu. Bagaimana tombol Anda tahu tentang pengendali acara? Anda biasanya berlangganan (atau mendengarkannya ).

Berikut ini adalah contoh "Terinspirasi C ++", ini bukan kode QT atau C ++ yang sebenarnya.

class MyClickHandler : public ClickListener{
   void clickHandler(ClickEvent e){
      showAlertBox("The button "+e.getSource().getName()+" has been clicked"); 
   }
};

Saat Anda membuat Tombol, Anda mendaftarkan turunan dari kelas MyClickHandler terhadap tombol.

...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...

Sekarang setiap kali Tombol bdiklik kotak pesan muncul mengatakan "Tombol Simpan telah diklik".

Anda dapat membayangkan aplikasi GUI memiliki dua tahap:

  • Menetapkan GUI: Periode singkat di startup, di mana semua objek dibuat dan terhubung satu sama lain.
  • The loop acara : GUI Anda dalam satu besar sementara loop dan hanya duduk di sana pemalasan sampai acara dipicu.

Ini adalah contoh yang sangat sederhana, tetapi saya akan merekomendasikan dengan kerangka apa pun yang Anda ambil, Anda mencoba menampilkan kotak pesan ketika sebuah tombol diklik.

Untuk framework, ada banyak dari mereka di luar sana: Dalam kasus C ++ saya mungkin akan merekomendasikan Qt.

Satu kata nasihat terakhir: Jauhi desainer GUI sampai Anda benar-benar tahu apa yang terjadi di latar belakang. Tidaklah sulit untuk menulis beberapa contoh sederhana dan untuk memahami loop acara terlebih dahulu dan kemudian beralih ke tata letak yang lebih kompleks.

sebastiangeiger
sumber
Jika Anda menambahkan tanda titik koma ke akhir definisi kelas, dan membuat pewarisan publik, itu akan menjadi sintaksis C + + yang tepat.
Lstor
1
Selesai Tapi saya tidak ingin menaikkan ekspektasi yang salah, karena kode tidak bisa dijalankan setelah semua. Sebagian besar pengalaman saya adalah di Swing yang mungkin mencerminkan nama-nama kelas. Konsep yang sama akan dipanggil secara berbeda dalam kerangka kerja yang berbeda.
sebastiangeiger
1
+1 Ini sepertinya satu-satunya jawaban yang menjawab pertanyaan (bagi saya sepertinya dia tidak hanya bertanya tentang kerangka kerja, dia bertanya tentang konsep umum)
Federico klez Culloca
1
Ewwww .... omong kosong pendengar jelek.
DeadMG
7

Sekarang adalah saat yang tepat untuk mempelajari program GUI. Seperti yang Anda ketahui C ++, saya akan merekomendasikan melihat QT. Dokumentasi yang bagus, basis pengguna yang sangat besar dan banyak contoh / tutorial yang tersedia untuk dipelajari.

mattnz
sumber
1
+1 untuk Qt - @David - Qt memiliki lingkungan pengembangan sendiri yang disebut Qt Creator yang mandiri, gratis dan relatif sederhana dibandingkan dengan yang lain. Qt kuat, intuitif, luas, didokumentasikan dengan sangat baik dan dengan basis pengguna yang besar dan aktif. Sangat mudah untuk memulai dan ada banyak contoh untuk mulai bermain dan melakukan hal Anda sendiri - yang merupakan cara yang bagus untuk belajar dengan cara. Itu dapat diunduh di sini
Roger Attrill
Saya cenderung merendahkan ini. QT mendorong banyak praktik yang sangat buruk di C ++ jika Anda tidak tahu apa yang harus diwaspadai. - Yang tidak Anda lakukan, setelah hanya satu bulan C ++. Selain itu, menyentuh beberapa aspek kompleks dalam C ++. Jika memungkinkan, saya akan memulai pemrograman GUI dalam bahasa yang berbeda terlebih dahulu, dan berkonsentrasi untuk mendapatkan C ++ dengan benar.
Konrad Rudolph
3

Anda juga dapat mulai dengan Microsoft Visual Studio C ++ Express . IDE sangat ramah dan mudah digunakan (dan gratis!), Dan Anda akan dapat membuat aplikasi GUI pertama Anda dengan sangat cepat ... Yang akan membantu Anda berkonsentrasi pada pemahaman dasar-dasar pemrograman yang digerakkan oleh peristiwa , pendekatan yang berbeda yang perlu Anda kuasai.

Anda juga dapat langsung mulai dengan membangun aplikasi berbasis WPF, tetapi saya akan mulai dengan Windows Forms pada awalnya, yang merupakan salah satu teknologi yang kurang dapat dipahami karena itu hanya dasar C ++ dengan Microsoft Windows Forms API.

Jalayn
sumber
1
Dalam VC ++ Express Anda dapat menulis GUI dengan: 1. Win32 API yang sangat tua, rumit dan hanya konyol 2. MFC yang merupakan tumpukan omong kosong lama 3. WTL yang lebih baik tetapi tidak lintas platform. 4. C ++ / CLI yang tidak populer, sangat didukung (bahkan tidak ada intellisense) dan terlalu rumit. Qt lebih mudah, cross-platform, memiliki desainer GUI yang bagus dan memiliki sejumlah besar kelas non-GUI yang berguna yang sangat penting dalam C ++ dengan pustaka standar yang kecil.
Anton Barkovsky
0

Mungkin lebih cocok untuk StackOverflow, ditandai c ++; tapi bagaimanapun juga.

Cari beberapa di Facebook; Qt, WxWidgets, WinFpi TheForgers, Fltk ...

GUI tidak terlalu sulit untuk digunakan, terutama sekali Anda sudah tahu c ++. Pergi dengan WxWidgets saya rasa; Qt agak terlalu rumit untuk pembelajaran satu bulan. Anda dapat mengambil Wx dalam beberapa jam.

Seb Holzapfel
sumber
-1

Pengguna tidak suka hal-hal rumit. Konsol adalah hal yang rumit, itu sebabnya Anda harus membuat aplikasi GUI yang lebih ramah dan mudah dipahami. Inilah alasan paling jelas yang saya lihat. Anda dapat melihat gtk atau Qt - keduanya adalah yang paling populer.

Sergey
sumber
2
CLI tidak rumit dan GUI menurut definisi LEBIH rumit untuk pengguna. Mereka lebih mudah diakses, tidak kalah rumit.
Ominus