Anda di halaman 1dari 6

Pemrograman Qt 4 QStackedLayout dan QComboBox

untuk Window Layering


Bismillahirrahmanirrahim.
Tulisan ini adalah bentuk PDF dari http://malsasa.wordpress.com/2013/08/03/pemroraman!
"t!#!"stackedla$out!dan!"combobo%!untuk!window!la$erin/.
Saya ingin membuat program yang bisa layering. Saya tidak tahu istilah resmi untuk ini tetapi
bayangkanlah aplikasi GUI yang jika satu tombol diklik, maka sebagian atau seluruh isi
jendela berubah jadi susunan lain. Anda sering melihatnya di aplikasi yang tidak seperti
Word, tidak seperti Exel, tidak seperti !otepad, tidak seperti "ire#ox. $ereka statis. Anda
sering melihatnya ketika Anda menginstal aplikasi di Windo%s. &ika Anda klik !ext'Bak,
sebagian isi jendela berubah. (ang seperti itu yang saya inginkan. )ali ini saya berhasil
membuatnya dengan meman#aatkan *Staked+ayout dan *,omboBox. Sayang, saya hanya
bisa memakai *,omboBox bukan *-ushButton, padahal yang saya maukan adalah
*-ushButton. .etapi tidak apa. Ini insya Allah menambah pengetahuan kita dalam membuat
aplikasi *t.
Wujud Program yang Diinginkan

-okoknya, tampilan dari satu jendela berubah total jika saya memilih salah satu opsi tampilan
dari / yang ada. Sederhana saja. Saya hanya memasukkan tombol dalam setiap *"rame
yang masing0masing *"rame itu bisa dipanggil ke atas 1makanya saya kasih nama layering2
dengan ombo box.
Daftar Kea! Qt yang Di"akai
3. *4ialog 5 dipakai untuk membuat jendela tertinggi
6. *7Box+ayout 5 dipakai untuk membuat kontainer yang menampung setiap blok'grup
dari tombol
8. *-ushButton 5 dipakai untuk membuat tombol
/. *"rame 5 dipakai untuk menggantikan *GroupBox dalam hal menampung tombol0
tombol jadi satu blok'grup.
9. *Staked+ayout 5 dipakai untuk membentuk layer:layer tampilan yang setiap
layernya bisa berisi %idget apa saja.
;. *,omboBox 5 dipakai untuk me%akili masing0masing layer dan untuk s%ithing
antarlayer.
Daftar #et$od Qt yang Di"akai
3. addWidget 0< dipakai oleh *7Box+ayout, *Staked+ayout
6. set$inimumSi=e 0< dipakai oleh *"rame
8. set+ayout 0< dipakai oleh *"rame dan *4ialog
/. set$aximumWidth 0< dipakai oleh *-ushButton
9. set"rameShado% 0< dipakai oleh *"rame untuk membentuk bayangan> opsi0opsinya
adalah *"rame??@aised, *"rame??Sunken, dan *"rame??-lain
;. addItem 0< dipakai oleh *Staked+ayout untuk membuat opsi0opsi yang bisa diklik.
-ersis saat Anda memilih #ont di Word.
A. set"rameShape 0< dipakai oleh *"rame untuk membentuk %ujud panel apakah itu
timbul atau tenggelam> opsi0opsinya adalah *"rame??Styled-anel Bdipakai oleh
de#ault0nya *t ,reator GUI BuilderC, *"rame??Box
D. onnet 0< dipakai di antara *,omboBox dengan *Staked+ayout.
Qt Creator dan Kode
Kode Program
Sama saja dengan ngite kemarin, hanya ada main%indo%.pp yang paling penting. &ika
bingung dengan kode *t, silakan merujuk ke tulisan *t sebelum ini.
#include "mainwindow.h"
#include "ui_mainwindow.h"

Dialog::Dialog()
{
QVBoxLayout *mainlayout new QVBoxLayout!
QVBoxLayout *layouta new QVBoxLayout!
QVBoxLayout *layout" new QVBoxLayout!
QVBoxLayout *layoutd new QVBoxLayout!
Q#u$hButton *tom"ola new Q#u$hButton("%")!
Q#u$hButton *tom"ol" new Q#u$hButton("B")!
Q#u$hButton *tom"olc new Q#u$hButton("&")!
Q#u$hButton *tom"old new Q#u$hButton("D")!
Q'(ame *)(amea new Q'(ame!
Q'(ame *)(ame" new Q'(ame!
Q'(ame *)(amed new Q'(ame!
Q*tac+edLayout *$tac+ia new Q*tac+edLayout!
Q&om"oBox *com"o new Q&om"oBox!

com"o,-add.tem(t(("%"))!
com"o,-add.tem(t(("B"))!
com"o,-add.tem(t(("&"))!
com"o,-add.tem(t(("D"))!

tom"old,-$et'ixed*i/e(00100)!

layouta,-add2idget(tom"ola)!
layout",-add2idget(tom"ol")!
layoutd,-add2idget(tom"old)!

)(amea,-$etLayout(layouta)!
)(ame",-$etLayout(layout")!
)(amea,-$et3inimum*i/e(44144)!
)(ame",-$et3inimum*i/e(44144)!
)(amed,-$etLayout(layoutd)!

55mem"entu+ )(ame
)(amea,-$et'(ame*ha6e(Q'(ame::*tyled#anel)!
)(amea,-$et'(ame*hadow(Q'(ame::7ai$ed)!
)(ame",-$et'(ame*ha6e(Q'(ame::*tyled#anel)!
)(ame",-$et'(ame*hadow(Q'(ame::7ai$ed)!
)(amed,-$et'(ame*ha6e(Q'(ame::*tyled#anel)!
)(amed,-$et'(ame*hadow(Q'(ame::7ai$ed)!

55mengecil+an u+u(an tom"ol c
tom"olc,-$et3aximum2idth(88)!

$tac+ia,-add2idget()(amea)!
$tac+ia,-add2idget()(ame")!
$tac+ia,-add2idget(tom"olc)!
$tac+ia,-add2idget()(amed)!

mainlayout,-addLayout($tac+ia)!

mainlayout,-add2idget(com"o)!
$etLayout(mainlayout)!

connect(com"o1 *.9:%L(acti;ated(int))1 $tac+ia1
*L<=($et&u((ent.ndex(int)))!
>
%nai!i! Kode Program
Sedikit saja sebenarnya yang istime%a dari program ke0/ ini. ,ukup tahu hal ini maka Anda
bisa memodi#ikasi program menjadi lebih istime%a.
S%&'
com"o,-add.tem(t(("%"))!
com"o,-add.tem(t(("B"))!
com"o,-add.tem(t(("&"))!
com"o,-add.tem(t(("D"))!
9unanya untu+ menam"ah+an o6$i,o6$i 6ada com"o "ox.
D'%
connect(com"o1 *.9:%L(acti;ated(int))1 $tac+ia1
*L<=($et&u((ent.ndex(int)))!
Ini sangat istime%a. Inilah inti dari pemrograman *t yakni SIG!A+ dan S+E.. $ethod
onnet12 ini adalah suatu penghubung antara objek yang mengeluarkan SIG!A+ dan objek
yang menerimanya yaitu memiliki S+E.. Ini maksudnya jika suatu objek mengeluarkan
SIG!A+ tertentu maka objek satunya melakukan #ungsi tertentu. Itu saja. 4an inilah yang
saya pakai untuk mengendalikan layer di dalam *Staked+ayout dengan menggunakan
*,omboBox. )ita pun pasti akan menggunakannya dalam mengendalikan objek lainnya
dengan tombol atau dengan objek lainnya pula. )arena itu, inilah inti dari pemrograman *t.
com"o ,- o"?e+ da(i Q&om"oBox
$tac+ia ,- o"?e+ da(i Q*ta+edLayout
(a!i %k$ir
)angkuman
3. +ayering dilakukan dengan *Staked+ayout karena ia mengakomodasi #rame0#rame
sebagai layer dan mampu mengatur susunannya yang kita lihat dengan S+E.
set,urrentIndex12.
6. +ayer0layer di dalam *Staked+ayout bisa diatur mana yang terlihat dengan
mengaturnya dari *,omboBox dengan menghubungkan mereka berdua memakai
onnet12.
8. Sementara yang saya tahu, hanya *,omboBox yang mampu mengatur layer dalam
*Staked+ayout dan *-ushButton belum berhasil mengaturnya. Anda bisa melihat
buktinya di sini dan di sini. .ampaknya, *Staked+ayout ingin selalu dberi masukan
berupa integer sementara *-ushButton tidaklah seperti *,omboBox yang
mengeluarkan nilai integer untuk setiap opsi yang kita tentukan. $isalnya yaa, A itu 3,
B itu 6, , itu 8, dan seterusnya seperti kode di atas.

Anda mungkin juga menyukai