Pemrograman Qt 8 QVBoxLayout, QHBoxLayout, QGridLayout dan Sifat-Sifatnya

dokumen-dokumen yang mirip
Wujud Program yang Diinginkan

Pemrograman Qt 9 QProcess dan Menjalankan Perintah Linux

Pemrograman Qt 19 Membaca dan Menuliskan Standard Output ke QTextEdit Secara Realtime

Pemrograman Qt 14 QPropertyAnimation untuk Animasi GUI

Pemrograman Qt 11 Phonon Framework untuk Memutar Audio OGG Ketika QPushButton Diklik

Wujud Program yang Diinginkan

Pemrograman Qt 17 Pan, Scroll, Zoom, Flip, dan Rotate untuk QGraphicsView

Pemrograman Qt 13 Logo Program dengan setwindowicon

TIPS LATIHAN MEMROGRAM

Pemrograman Qt 4 QStackedLayout dan QComboBox untuk Window Layering

Belajar Menggunakan KDE Edisi 1 Perkenalan Singkat KDE

Pemrograman Qt 10 QTextEdit, QFile, QTextStream, QLabel, Membaca Standard Output Shell, Membaca Berkas, dan Membuat Berkas TXT

Belajar Menggunakan KDE Edisi 3 Mengenal Menu dan Taskbar

Pemrograman Qt 20 QSystemTrayIcon untuk Membuat Aplikasi System Tray

Tutorial L A TEX di Linux (Disertai Contoh)

Perkenalan Pemrograman GUI di Linux dengan Qt Framework dan Bahasa C++ Ade Malsasa Akbar

Pemrograman Qt 18 QTextStream untuk Membuat Aplikasi Proxy Changer

Pemrograman Qt 12 Kalkulator Sederhana dengan QLineEdit dan Casting QString to int

Koneksi Jaringan Host-Guest Ubuntu-Mint di Virtualbox untuk PING dan Wireshark

Pemrograman Qt 6 Membuat Program GUI Sederhana Menggunakan Sebanyak Mungkin Kelas (QStackedLayout, QPushButton, QLabel, QComboBox, dan Lainnya)

Membuat Form Dinamis di Java

Panduan Pengguna untuk AllDeb Installer

Otodidak Behind The Scene

PEMROGRAMAN II. Materi : nursari2010.blogdetik.com String String Handling Java.util,Java.io. By : Sri Rezeki Candra Nursari

GUI & Event Handling. Viska Mutiawani, M.Sc

Tugas Rekayasa Perangkat Lunak Berorientasi Obyek Review IDE untuk Java (NetBeans, Eclipse, Intellij IDEA)

MODUL 1 INSTALASI PAKET JAVA DAN PROGRAM SEDERHANA

Tutorial Instalasi Wordpress dengan XAMPP di Ubuntu Maverick

BAB II LANDASAN TEORI

PANDUAN INSTALASI CLIENT KUNANG-KUNANG DIGITAL SIGNAGE (LINUX SYSTEM) 16 Maret 2015

[TUTORIAL INKSCAPE] Desain Logo Ebook FUI

PENDAHULUAN. Gambar 1.1. GameMaker dari YoyoGames

EDISI MEI 2004, Volume IX, No. 2 ISSN : Oleh: Kristophorus Hadiono dan Hari Murti

PENDAHULUAN TENTANG NETBEANS

Membangun Web Statis Menggunakan Dreamweaver Oleh : Mochamad Subecha, SE

PANDUAN PENGGUNAAN SISTEM INFORMASI APLIKASI PENDIDIKAN. Penerimaan Peserta Ddidik Baru Online SITUS PUBLIK PT. TELKOM INDONESIA

Mengetik Cepat Dengan Sepuluh Jari. Oleh : dwi sakethi. pengrajin sistem informasi. dosen Ilkom FMIPA Unila

MENGATUR FORMAT PARAGRAF Oleh Ade Sobandi Hendri Winata Rasto

PANDUAN PENGGUNAAN SMS CENTER APLIKASI RESES (HIBAH)

Modul Praktikum 2 Dasar-Dasar Teknologi Informasi dan Komunikasi. Mengolah Kata Dengan Microsoft Word (1)

Aplikasi Surat Keluar Masuk Versi 1.0

Cara Install Ubuntu. oleh: Kiki Mahardika Sari

5.1 Pelajaran: Menggunakan Map Composer

BAB I PENDAHULUAN 1.1 Latar Belakang

Mail Merge di Microsoft Excel 2007

PERTEMUAN 1 PENGENALAN MICROSOFT OFFICE WORD 2007

Malang, Januari 2007 Penulis

Materi 3 Pemrograman Visual

Riyanto

MENYUNTING ARTIKEL DI WIKIPEDIA, ENSIKLOPEDIA BEBAS

Membuat Buku Kerja dengan Microsoft Excel

Sistem Manajemen Paket Ubuntu

YAK for WordPress Fast Track

Husty Serviana, M.Si. Jurusan Pendidikan Matematika FPMIPA, Universitas Pendidikan Indonesia chery

Vat-Out Konversi Faktur Pajak Keluaran. Panduan Penggunaan Aplikasi 2017 ISS PANDUAN PENGGUNAAN APLIKASI VAT-OUT 1

GUI (Grapichal User Interface)

TUGAS 1 APLIKASI WEB DINAMIS LANJUT

2. Manakah diantara pilihan berikut ini yang merupakan bagian dari event delegation model? Sebuah komponen yang menampilkan message

Buka Start -> All Programs -> Microsoft Visual Studio - > Microsoft Visual Fox Pro 6.0

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Aplikasi Komputer. Pengenalan tentang Ms. Word 2010 serta fungsi-fungsi dasarnya (1) Ita Novita, S.Kom, M.T.I. Modul ke: Fakultas Ilmu Komputer

MODUL XI MEMBUAT LAPORAN

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI

GUI & Event Handling. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

MEMULAI APLIKASI. Langkah-langkah menggunakan applikasi Manajemen Aset

Pemrograman Aplikasi GUI dengan Framework Qt (5.0.1) Penulis: Zulhaj Aliyansyah

Sekilas Mengenai HTML

Buku Panduan Penggunaan Aplikasi SKI

Panduan WartaHijau. Login

CARA MEMBUAT CSS DENGAN DREAMWEAVER

Tutorial Dasar Cara Membuat Blog

PAKET PROGRAM APLIKASI

Selamat Datang di Pengujian Berbasis Komputer (CBT) Ujian Tutorial: Bahasa Indonesia

1. Pendahuluan. 2. Mengaktifkan Microsoft Excell. 3. Mengenal Lingkungan Kerja Microsoft Excell 4. Mengakhiri Microsoft Excell

Introduction Eclipse in Ubuntu

Dwiny Meidelfi, M.Cs

BAB IX MENGENAL MS.ACCESS 2007

Buku Petunjuk Manajer sambungan Edisi 1.0 ID

Menggunakan CodeBlock Dengan Cepat (platform non linux) Oleh:wijanarto

Visual Basic (VB) Tatik yuniati. Abstrak.

Gambar Halaman Awal KTI Online

Belajar Java Secara Visual & Interaktif

Bab 2 Tinjauan Pustaka

BAB 4 IMPLEMENTASI DAN EVALUASI. digunakan untuk mendukung implementasi data warehouse yang telah

Perancangan Website Ujian. Teknik Elektro UNDIP Berbasis HTML

LANGKAH MUDAH MEMBUAT BLOG DOSEN MENGGUNAKAN

Aplikasi Komputer. Ms. Powerpoint 2010 MODUL PERKULIAHAN. Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

MODUL PEMOGRAMAN WEB I STMIK IM BANDUNG MODUL PEMOGRAMAN WEB I. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

SMS GATEWAY. Versi 3.2. tanggal 07 Januari 2012

Petunjuk Pengoperasian SPSE Auditor

Petunjuk Pengoperasian SPSE 3.5 Auditor

Membuat Grafik dengan Microsoft Excel

Cara Mengoperasikan Google Drive (Document)

Bab I Pengenalan Visual BASIC

Langkah Mudah Pemrograman Android Menggunakan App Inventor 2 Ultimate

Buku Panduan bagi Pengguna MODEM USB Model : BRG-U100 Ver. USB B

Materi : GUI AWT & SWING.

Modul : Antarmuka. 2.1 Pelajaran : Pengenalan Singkat Bagaimana menggunakan tutorial ini BAB 2

Membuat Game Mencocokan Objek dengan C++ (Part 1)

MENGORGANISASIKAN OBJEK GAMBAR

Transkripsi:

Pemrograman Qt 8 QVBoxLayout, QHBoxLayout, QGridLayout dan Sifat-Sifatnya Ade Malsasa Akbar 1 Desember 2013 Ringkasan Bismillahirrahmanirrahim. Kelebihan pemrograman visual adalah adanya layout yang secara otomatis akan mengatur penataan apa pun objek yang kita tuliskan di jendela. Pendek kata, kita tidak perlu lagi mengatur ukuran matematis (X,Y) dari setiap objek GUI satu per satu karena sudah diotomatisasi oleh layout. Di Java SWING, saya menemukan FreeLayout, GridLayout, BoxLayout, AbsoluteLayout, dan lain-lain. Di Qt Framework ini, saya menemukan QVBoxLayout, QHBoxLayout, QGridLayout, QFormLayout, dan lain-lain pula. Saya akan membahas 3 layout Qt yang sudah saya gunakan dalam latihan-latihan saya kemarin dan ini bisa Anda pakai dalam program apa pun. Penting, bisa diletakkan lebih dari 1 jenis layout dalam 1 jendela. Semoga bermanfaat untuk Anda. 1

Daftar Isi 1 Teori 4 1.1 Manfaat Nyata Layout........................ 4 1.2 Ke Mana Arah Tulisan Ini?..................... 5 2 Pemrograman 6 2.1 Menggunakan Layout Horizontal.................. 6 2.2 Kode.................................. 6 2.2.1 mainwindow.cpp....................... 6 2.2.2 mainwindow.h........................ 6 2.2.3 Qt Creator dan Kode.................... 7 2.2.4 Hasil Layout Horizontal................... 8 3 Menggunakan Layout Vertikal 9 3.1 Kode.................................. 9 3.1.1 mainwindow.cpp....................... 9 3.1.2 mainwindow.h........................ 9 3.1.3 Qt Creator dan Kode.................... 9 3.1.4 Hasil Layout Vertikal..................... 10 4 Menggunakan Grid Layout 10 4.1 Kode.................................. 11 4.1.1 mainwindow.cpp....................... 11 4.1.2 mainwindow.h........................ 11 4.1.3 Hasil Grid Layout...................... 12 5 Modifikasi Terhadap QHBoxLayout, QVBoxLayout, dan QGrid- Layout 13 5.1 QHBoxLayout............................. 13 5.1.1 Penjelasan Kode QHBoxLayout............... 15 5.2 QVBoxLayout............................. 16 5.2.1 Penjelasan QVBoxLayout.................. 19 5.3 QGridLayout............................. 20 5.3.1 Qt Creator dan Kode.................... 22 5.3.2 Penjelasan QGridLayout................... 22 6 Rangkuman 23 7 Unduh Kode Sumber 24 8 Tentang Dokumen Ini 24 9 Tentang Penulis 24 2

Daftar Gambar 1 Contoh Manfaat Layout....................... 4 2 Contoh Penerapan Layout Vertikal................. 4 3 Qt Creator Menunjukkan Kode QHBoxLayout.......... 7 4 QHBoxLayout dengan 4 Tombol.................. 8 5 Maximized QHBoxLayout...................... 8 6 QVBoxLayout............................. 10 7 Maximized QVBoxLayout...................... 10 8 Rencana QGridLayout........................ 11 9 Hasil QGridLayout.......................... 12 10 Maximized QGridLayout....................... 12 11 QHBoxLayout Asli.......................... 13 12 QHBoxLayout Hasil Modifikasi................... 14 13 QVBoxLayout Asli.......................... 16 14 QVBoxLayout Asli Ketika Maximized............... 16 15 QVBoxLayout Setelah Dimodifikasi................. 17 16 QVBoxLayout Maximized Setelah Dimodifikasi.......... 18 17 QGridLayout............................. 20 18 Maximized QGridLayout....................... 20 19 Kode QGridLayout Modifikasi dalam Qt Creator......... 22 20 Parameter addwidget dari QGridLayout.............. 23 3

1 Teori 1.1 Manfaat Nyata Layout Misalkan Anda ingin membuat program dengan empat tombol berjajar ke samping seperti gambar ini: Gambar 1: Contoh Manfaat Layout maka tidak perlulah Anda menulis kode peletakan x sekian y sekian untuk masing-masing tombol dan sampai berjam-jam memosisikan ukurannya biar simetris seperti gambar. Tidak perlu. Cukup buat objek layout horizontal lalu masukkan kode tombol-tombol ke dalam layout itu. Otomatis si layout horizontal akan mengatur tombol-tombol Anda berjajar ke samping. Setiap Anda masukkan satu tombol ke dalam layout, ia akan diletakkan persis di sebelah kanan tombol sebelumnya. Otomatis. Begitu pula dengan kebutuhan penataan tombol yang vertikal, atau kebutuhan penataan yang seperti keramik-keramik lantai (grid), atau malah ingin bebas menentukan ukuran secara manual semuanya, juga bisa. Gambar ini contoh program yang memakai layout vertikal: Gambar 2: Contoh Penerapan Layout Vertikal 4

Nah, sangat praktis, bukan? Layout di Qt (maupun di framework lain) itu berguna sekali. Dan apakah hanya untuk tombol? Tentu tidak. Seluruh objek GUI (QWidget) seperti QComboBox akan diperlakukan sama seperti tombol. Maka jadi makin praktislah memrogram GUI dengan layout di Qt. Pasti lebih praktis. 1.2 Ke Mana Arah Tulisan Ini? Kita akan latihan saja kali ini. Pokoknya kita akan: 1. memilih dan membuat layout, 2. memasang tombol ke dalam layout, 3. melihat hasilnya secara normal dan maximized, 4. memodifikasi ukuran-ukuran yang tersedia pada layout, dan 5. menggabung 3 jenis layout dalam 1 jendela. 5

2 Pemrograman 2.1 Menggunakan Layout Horizontal Ini dilakukan dengan kelas QHBoxLayout. Kita akan membuat program seperti gambar pertama di atas. 2.2 Kode 2.2.1 mainwindow.cpp 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 Dialog::Dialog() 5 { 6 QHBoxLayout *layoututama = new QHBoxLayout; 7 QPushButton *tombolsatu = new QPushButton("SATU"); 8 QPushButton *tomboldua = new QPushButton("DUA"); 9 QPushButton *tomboltiga = new QPushButton("TIGA"); 10 QPushButton *tombolempat = new QPushButton("EMPAT"); 11 12 tombolsatu->setfixedsize(55,55); 13 tomboldua->setfixedsize(55,55); 14 tomboltiga->setfixedsize(55,55); 15 tombolempat->setfixedsize(55,55); 16 17 layoututama->addwidget(tombolsatu); 18 layoututama->addwidget(tomboldua); 19 layoututama->addwidget(tomboltiga); 20 layoututama->addwidget(tombolempat); 21 22 setlayout(layoututama); 23 24 } 2.2.2 mainwindow.h 1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include 5 6 class Dialog : public QDialog 7 { 8 Q_OBJECT 6

9 10 public: 11 Dialog(); 12 13 private: 14 15 }; 16 17 #endif // MAINWINDOW_H 18 } 2.2.3 Qt Creator dan Kode Gambar 3: Qt Creator Menunjukkan Kode QHBoxLayout 7

2.2.4 Hasil Layout Horizontal Gambar 4: QHBoxLayout dengan 4 Tombol Gambar 5: Maximized QHBoxLayout Perhatikan, tombol-tombol itu jadi renggang dan otomatis centered ketika jendela maximized. Ini sifat QHBoxLayout yang pertama. 8

3 Menggunakan Layout Vertikal Ini dilakukan dengan kelas QVBoxLayout. Kita akan membuat program seperti gambar dua. 3.1 Kode 3.1.1 mainwindow.cpp 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 Dialog::Dialog() 5 { 6 QVBoxLayout *layoututama = new QVBoxLayout; 7 QPushButton *tombolsatu = new QPushButton("SATU"); 8 QPushButton *tomboldua = new QPushButton("DUA"); 9 QPushButton *tomboltiga = new QPushButton("TIGA"); 10 QPushButton *tombolempat = new QPushButton("EMPAT"); 11 12 tombolsatu->setfixedsize(55,55); 13 tomboldua->setfixedsize(55,55); 14 tomboltiga->setfixedsize(55,55); 15 tombolempat->setfixedsize(55,55); 16 17 layoututama->addwidget(tombolsatu); 18 layoututama->addwidget(tomboldua); 19 layoututama->addwidget(tomboltiga); 20 layoututama->addwidget(tombolempat); 21 22 setlayout(layoututama); 23 24 } 3.1.2 mainwindow.h Sama dengan yang horizontal. 3.1.3 Qt Creator dan Kode Sama saja dengan yang horizontal, bedanya cuma pemakaian QVBoxLayout di sini. 9

3.1.4 Hasil Layout Vertikal Gambar 6: QVBoxLayout Gambar 7: Maximized QVBoxLayout Perhatikan, tombol-tombol itu jadi renggang, centered on Y axis, dan align left ketika jendela maximized. Align left ini ciri dari QVBoxLayout yang default. 4 Menggunakan Grid Layout Grid Layout di Qt Framework adalah jalan kebebasan yang sangat praktis untuk membangun GUI yang semau gue. Ini jenis layout paling fleksibel yang 10

dapat Anda pergunakan untuk aplikasi yang kompleks. Ini dilakukan dengan menggunakan kelas QGridLayout. Kita akan buat seperti gambar ini: Gambar 8: Rencana QGridLayout 4.1 Kode 4.1.1 mainwindow.cpp Sama saja dengan di atas, hanya ganti QVBoxLayout dengan QGridLayout. 4.1.2 mainwindow.h Sama juga dengan header sebelumnya. 11

4.1.3 Hasil Grid Layout Sekilas mirip QVBoxLayout karena default sudah vertikal. Ini belum kelihatan manfaat aslinya QGridLayout. Gambar 9: Hasil QGridLayout Gambar 10: Maximized QGridLayout Perhatikan, sekilas memang mirip QVBoxLayout walau sudah maximized. Bedanya, ia di center in Y dan center in X. Sedangkan QVBoxLayout defaultnya cuma center in X. 12

5 Modifikasi Terhadap QHBoxLayout, QVBoxLayout, dan QGridLayout Sampai saatnya bagian terpenting yakni modifikasi. Ini tujuannya untuk mengetahui sifat-sifat dari kelas layout yang bersangkutan. Jika tidak dimodifikasi, kita tahunya hanya begitu doang QHBoxLayout, QVBoxLayout, dan QGrid- Layout. Padahal ada seabreg kemampuan dari layout tersebut yang bisa jadi sangat kita perlukan tapi kita tidak tahu. 5.1 QHBoxLayout Gambar 11: QHBoxLayout Asli Sifatnya memanjang ke samping secara simetris kalau di-maximize, tidak memanjang ke atas. 1 //mainwindow.cpp 2 #include "mainwindow.h" 3 #include "ui_mainwindow.h" 4 5 Dialog::Dialog() 6 { 7 QHBoxLayout *layoututama = new QHBoxLayout; 8 QPushButton *tombolsatu = new QPushButton("SATU"); 9 QPushButton *tomboldua = new QPushButton("DUA"); 10 QPushButton *tomboltiga = new QPushButton("TIGA"); 11 QPushButton *tombolempat = new QPushButton("EMPAT"); 12 13 tombolsatu->setminimumsize(55,55); 13

14 tomboldua->setminimumsize(55,55); 15 tomboltiga->setminimumsize(55,55); 16 tombolempat->setminimumsize(55,55); 17 18 layoututama->addwidget(tombolsatu); 19 layoututama->addwidget(tomboldua); 20 layoututama->addwidget(tomboltiga); 21 layoututama->addwidget(tombolempat); 22 23 setlayout(layoututama); 24 } Listing 1: Kode QHBoxLayout Asli Gambar 12: QHBoxLayout Hasil Modifikasi Sifatnya memanjang ke samping dan ke atas simetris kalau di-maximize, mirip bagian modem di Otodidak. 1 //mainwindow.cpp 2 #include "mainwindow.h" 3 #include "ui_mainwindow.h" 4 5 Dialog::Dialog() 6 { 7 QHBoxLayout *layoututama = new QHBoxLayout; 8 QPushButton *tombolsatu = new QPushButton("SATU"); 9 QPushButton *tomboldua = new QPushButton("DUA"); 10 QPushButton *tomboltiga = new QPushButton("TIGA"); 11 QPushButton *tombolempat = new QPushButton("EMPAT"); 12 14

13 tombolsatu->setminimumsize(55,55); 14 tomboldua->setminimumsize(55,55); 15 tomboltiga->setminimumsize(55,55); 16 tombolempat->setminimumsize(55,55); 17 18 tombolsatu->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 19 tomboldua->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 20 tomboltiga->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 21 tombolempat->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 22 23 layoututama->addwidget(tombolsatu); 24 layoututama->addwidget(tomboldua); 25 layoututama->addwidget(tomboltiga); 26 layoututama->addwidget(tombolempat); 27 28 setlayout(layoututama); 29 } Listing 2: Kode QHBoxLayout Hasil Modifikasi 5.1.1 Penjelasan Kode QHBoxLayout Saya ganti fungsi setfixedsize dengan setminimumsize sehingga ketika jendela di-maximize, si tombol ikut membesar mengikuti ukuran jendela. Saya tambahkan fungsi setsizepolicy pada masing-masing tombol sehingga bisa expanding ke atas juga mengikuti besarnya ukuran jendela. 15

5.2 QVBoxLayout Gambar 13: QVBoxLayout Asli Gambar 14: QVBoxLayout Asli Ketika Maximized Memanjang ke samping tetapi tidak ke atas sekaligus ketika di-maximize. 1 //mainwindow.cpp 2 #include "mainwindow.h" 3 #include "ui_mainwindow.h" 4 5 Dialog::Dialog() 16

6 { 7 QVBoxLayout *layoututama = new QVBoxLayout; 8 QPushButton *tombolsatu = new QPushButton("SATU"); 9 QPushButton *tomboldua = new QPushButton("DUA"); 10 QPushButton *tomboltiga = new QPushButton("TIGA"); 11 QPushButton *tombolempat = new QPushButton("EMPAT"); 12 13 tombolsatu->setminimumsize(55,55); 14 tomboldua->setminimumsize(55,55); 15 tomboltiga->setminimumsize(55,55); 16 tombolempat->setminimumsize(55,55); 17 18 layoututama->addwidget(tombolsatu); 19 layoututama->addwidget(tomboldua); 20 layoututama->addwidget(tomboltiga); 21 layoututama->addwidget(tombolempat); 22 23 setlayout(layoututama); 24 } Listing 3: Kode QVBoxLayout Asli Gambar 15: QVBoxLayout Setelah Dimodifikasi 17

Gambar 16: QVBoxLayout Maximized Setelah Dimodifikasi 1 //mainwindow.cpp 2 #include "mainwindow.h" 3 #include "ui_mainwindow.h" 4 5 Dialog::Dialog() 6 { 7 QVBoxLayout *layoututama = new QVBoxLayout; 8 QPushButton *tombolsatu = new QPushButton("SATU"); 9 QPushButton *tomboldua = new QPushButton("DUA"); 10 QPushButton *tomboltiga = new QPushButton("TIGA"); 11 QPushButton *tombolempat = new QPushButton("EMPAT"); 12 13 tombolsatu->setminimumsize(55,55); 14 tomboldua->setminimumsize(55,55); 15 tomboltiga->setminimumsize(55,55); 16 tombolempat->setminimumsize(55,55); 17 18 tombolsatu->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 19 tomboldua->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 20 tomboltiga->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 21 tombolempat->setsizepolicy(qsizepolicy::expanding, QSizePolicy:: Expanding); 22 18

23 layoututama->addwidget(tombolsatu); 24 layoututama->addwidget(tomboldua); 25 layoututama->addwidget(tomboltiga); 26 layoututama->addwidget(tombolempat); 27 28 setlayout(layoututama); 29 } Listing 4: QVBoxLayout Hasil Modifikasi 5.2.1 Penjelasan QVBoxLayout Saya ganti fungsi setfixedsize dengan setminimumsize sehingga ketika jendela di-maximize, si tombol ikut membesar mengikuti ukuran jendela. Saya tambahkan fungsi setsizepolicy pada masing-masing tombol sehingga bisa expanding ke atas juga mengikuti besarnya ukuran jendela. 19

5.3 QGridLayout Gambar 17: QGridLayout Gambar 18: Maximized QGridLayout Perhatikan, inilah sisi kekuatan QGridLayout. Kita bisa mengatur tomboltombol sehingga membentuk kolom dan baris. Perhatikan juga sifatnya kalau di-maximize. 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 Dialog::Dialog() 5 { 6 QGridLayout *layoututama = new QGridLayout; 20

7 QPushButton *tombolsatu = new QPushButton("SATU"); 8 QPushButton *tomboldua = new QPushButton("DUA"); 9 QPushButton *tomboltiga = new QPushButton("TIGA"); 10 QPushButton *tombolempat = new QPushButton("EMPAT"); 11 QPushButton *tombollima = new QPushButton("LIMA"); 12 QPushButton *tombolenam = new QPushButton("ENAM"); 13 QPushButton *tomboltujuh = new QPushButton("TUJUH"); 14 QPushButton *tomboldelapan = new QPushButton("DELAPAN"); 15 16 //ukuran tombol 17 18 tombolsatu->setfixedsize(55,55); 19 tomboldua->setfixedsize(55,55); 20 tomboltiga->setfixedsize(55,55); 21 tombolempat->setfixedsize(55,55); 22 23 tombollima->setfixedsize(55,55); 24 tombolenam->setfixedsize(55,55); 25 tomboltujuh->setfixedsize(55,55); 26 tomboldelapan->setfixedsize(55,55); 27 28 //mengatur peletakan di grid 29 30 layoututama->addwidget(tombolsatu); 31 layoututama->addwidget(tomboldua); 32 layoututama->addwidget(tomboltiga); 33 layoututama->addwidget(tombolempat); 34 35 layoututama->addwidget(tombollima, 0, 1); 36 layoututama->addwidget(tombolenam, 1, 1); 37 layoututama->addwidget(tomboltujuh, 2, 1); 38 layoututama->addwidget(tomboldelapan, 3, 1); 39 40 //pengaturan untuk penataan 41 42 layoututama->setalignment(tombolsatu, Qt::AlignLeft); 43 layoututama->setalignment(tomboldua, Qt::AlignLeft); 44 layoututama->setalignment(tomboltiga, Qt::AlignLeft); 45 layoututama->setalignment(tombolempat, Qt::AlignLeft); 46 47 layoututama->setalignment(tombollima, Qt::AlignLeft); 48 layoututama->setalignment(tombolenam, Qt::AlignLeft); 49 layoututama->setalignment(tomboltujuh, Qt::AlignLeft); 50 layoututama->setalignment(tomboldelapan, Qt::AlignLeft); 51 52 setlayout(layoututama); 53 54 } Listing 5: Kode Program QGridLayout Modifikasi 21

Kode paling pentingnya: 1 //mengatur peletakan di grid 2 3 layoututama->addwidget(tombolsatu); 4 layoututama->addwidget(tomboldua); 5 layoututama->addwidget(tomboltiga); 6 layoututama->addwidget(tombolempat); 7 8 layoututama->addwidget(tombollima, 0, 1); 9 layoututama->addwidget(tombolenam, 1, 1); 10 layoututama->addwidget(tomboltujuh, 2, 1); 11 layoututama->addwidget(tomboldelapan, 3, 1); 12 } 5.3.1 Qt Creator dan Kode Gambar 19: Kode QGridLayout Modifikasi dalam Qt Creator 5.3.2 Penjelasan QGridLayout Yang perlu diperhatikan, QGridLayout itu punya fungsi addwidget yang berbeda bentuk dari addwidget pada kelas-kelas yang lain. Mengapa bisa berbeda? Ya karena sifat QGridLayout itu sendiri yang membuat penataan tombol kita (nantinya tidak cuma tombol) bisa membentuk kolom-kolom dan baris-baris. Seperti ini bentuk khususnya: 22

Gambar 20: Parameter addwidget dari QGridLayout Jadi, dengan QGridLayout, kita mengatur objek-objek GUI kita (tombol) berdasarkan kolom dan baris. Bisa dikata, posisi x dan y. Oleh karena itu, kode saya di atas yang berbunyi: 1 layoututama->addwidget(tombollima, 0, 1); 2 layoututama->addwidget(tombolenam, 1, 1); 3 layoututama->addwidget(tomboltujuh, 2, 1); 4 layoututama->addwidget(tomboldelapan, 3, 1); maksudnya: letakkanlah objek tombollima pada baris ke-0 kolom ke-1 letakkan objek tombolenam, pada baris ke-1 kolom ke-1, dan seterusnya. 6 Rangkuman QGridLayout adalah layout paling fleksibel yang bisa kita gunakan untuk membuat antarmuka sebebas mungkin. Untuk membuat tombol bisa membesar mengikuti ukuran jendela, bisa digunakan setsizepolicy dengan parameter QSizePolicy::Expanding pada kedua tempatnya. 23

7 Unduh Kode Sumber Program kali ini bernama Senggang-Spacing. Alamat: http://otodidak.freeserver.me/tarball/senggang-spacing. tar.gz Ukuran: 3 KB 8 Tentang Dokumen Ini Dokumen ini adalah versi PDF dari posting asli http://malsasa.wordpress. com/2013/08/30 /pemrograman-qt-8-qvboxlayout-qhboxlayout-qgridlay out-dan-sifat-sifatnya/. Dokumen ini disusun ulang dengan L A TEX dengan antarmuka Gummi di atas Ubuntu 12.04. Dokumen ini adalah bagian dari usaha kecil memperbanyak panduan Linux dalam Bahasa Indonesia. Dokumen ini tidaklah bebas dari kesalahan yang membuat penulis memohon maaf dan mengajak Anda untuk menulis dokumen yang lebih baik. Penulis berusaha membuat versi PDF ini semirip mungkin dengan versi HTML. Namun penulis menemukan bahwa kode-kode sumber dalam dokumen ini bisa di saling-tempel dengan sempurna pada Evince PDF Viewer dan tidak sempurna (membutuhan sedikit penyuntingan tambahan) pada Okular PDF Viewer. Maka penulis menyarankan Anda untuk menggunakan Evince atau menulis sendiri tiap-tiap kode sumber yang ada atau mengunduh langsung versi paket kode sumbernya pada alamat yang tersebut di atas. Penulis memohon maaf atas ketidaknyamanan ini. Catatan teknis keterbatasan: listings, fontenc, [T1], accsupp, minted (ada bug pada Gummi), Pygments. 9 Tentang Penulis Penulis adalah warga Forum Ubuntu Indonesia dan aktif di forum-forum Linux lain di Indonesia. Penulis mendukung pendidikan perangkat lunak legal (terutama FOSS) untuk masyarakat. Penulis menyediakan buku-buku panduan Linux untuk pemula maupun ahli untuk diunduh secara gratis 1. Penulis bisa dihubungi via SMS di nomor 0896 7923 7257. 1 http://malsasa.wordpress.com/pdf 24