Membuat aplikasi Vala + Gtk3. [Bahagian pertama]

Selepas itu jawatan pertama Saya membaca komen bahawa lebih baik memulakan dengan sesuatu yang lebih kompleks daripada "hello world", maka saya akan membuat urutan (Atau 3 4) hantar membuat aplikasi mudah (dengan vala + gtk 3).

Aplikasi ini akan terdiri daripada permainan soal jawab pilihan mudah (jenis Trivia), di mana menjawab 3 soalan salah berakhir (permainan berakhir), dan objektifnya adalah untuk menjawab sebanyak mungkin soalan, untuk setiap soalan anda mempunyai masa yang terhad untuk membalas.

Design

Reka bentuk utama aplikasi kami adalah:

aplikasi

Kemudian kita akan meletakkan beberapa butang yang akan memberi kita pilihan 50% (menghilangkan dua jawapan yang salah), membekukan masa, lulus soalan. Kesemuanya hanya dapat digunakan sekali, dilumpuhkan sekali digunakan.

Reka bentuk a Kod
Seperti yang kita lihat dalam reka bentuk kita dapat melihat elemen gtk yang akan kita gunakan:

Jawapan -> Butang.

Soalan -> Label.

Masa -> ProgressBar.

Titik dan Soalan yang salah / betul -> Label.

Kita dapat melihat bahawa kita mempunyai struktur menegak oleh itu kita boleh menggunakan GBox secara menegak.

Kod

int main (string [] args) {Gtk.init (ref args); var window = Gtk.Window baru (); window.title = "aplikasi"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // kotak menegak var box = Gtk.Box baru (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Label untuk soalan var question = Gtk.Label baru ("Soalan?"); // bar program masa var time_bar = Gtk.ProgressBar baru (); timebar.set_text ("Masa"); time_bar.set_show_text (benar); // Butang respons var respons1 = Gtk.Button.with_label baru ("Respons 1"); var resposta2 = Gtk.Button.with_label baru ("Balas 2"); var resposta3 = Gtk.Button.with_label baru ("Balas 3"); var resposta4 = Gtk.Button.with_label baru ("Balas 4"); // label maklumat var point = label Gtk. baru ("Poin: 0"); box.pack_start (soalan); box.pack_start (time_bar); box.pack_start (balasan1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (mata); window.add (kotak); window.show_all (); Gtk.main (); pulangkan 0;}

Tangkap dari 2013-11-02 21:44:14

Untuk memindahkan "waktu" kami menggunakan GLib.Timeout di mana setiap 500 milisaat ia akan diaktifkan (ini adalah gelung di mana pemboleh ubah yang mengandungi nilai bar kami akan meningkat)

GLib.Timeout.add (500, () => {// Dapatkan kemajuan semasa: // (0.0 -> 0%; 1.0 -> 100%) kemajuan berganda = time_bar.get_fraction (); // Kemas kini bar: progress = progress + 0.01; time_bar.set_fraction (progress); // Ulangi sehingga kemajuan pulangan 100% <1.0;});

Pautan yang menarik 
http://www.valadoc.org/#!wiki=index (anda boleh menemui semua elemen gtk dengan kaedahnya ...)


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   lozanotux kata

    Sangat bagus, saya akan bertanya kepada anda bagaimana saya boleh membuat sejenis TABS tetapi secara menegak, walaupun tidak semestinya harus tab, mereka boleh menjadi butang atau ToggleButtons, tetapi saya memerlukan tingkah laku tab, bahawa ketika menyentuh 1 kandungannya dilihat dan tab yang lain dilumpuhkan, saya tidak tahu sama ada saya menjelaskan diri saya, saya meninggalkan gambar untuk melihat apakah anda boleh memberi saya beberapa maklumat untuk disiasat. Terima kasih!

    GAMBAR: http://i.imm.io/1jURw.png

    1.    Lolbimbo kata

      «Susun atur» atau perubahan teks (contohnya)?

  2.   pandev92 kata

    Parla Catalan

  3.   terkejut kata

    Ini sangat baik sebenarnya ia serupa dengan apa yang saya cari, satu soalan, bolehkah soalan ini dihubungkan dengan terminal dengan cara apa pun?
    Contohnya: Untuk memulakan saya meluangkan masa untuk menjawab saya membiarkannya tanpa had dan itulah yang ingin saya lakukan.

    Persekitaran desktop apa yang anda mahu pasang?
    KDE
    Gnome 3
    Kayu manis
    Perpaduan

    Dan masing-masing yang dihubungkan dengan perintah pemasangan masing-masing di terminal, sudo apt-get install ubuntu-desktop

    1.    Lolbimbo kata

      Ya, anda hanya perlu menulis Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

      http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync

  4.   Saul Uribe kata

    Hebat, saya suka jawatan, saya akan berlatih (dan saya melihat untuk maju), salam