Sabtu, 28 Maret 2015

Mengenal Fungsi String MySQL

Database memiliki peran penting dalam menyimpan data pada program yang kita buat, MySQL adalah salah satu database dari tipe RDBMS (Relational Database Management System) yang cukup populer di kalangan para developer khususnya developer web. Untuk itu, saya ingin mencoba berbagi seputar fungsi-fungsi dari MySQL itu sendiri khususnya fungsi dalam mengolah string di MySQL. Saya berharap nantinya dari postingan saya ini dapat memberikan wawasan kepada teman-teman dalam mendalami dan memahami fungsi-fungsi string yang ada pada MySQL.

Tanpa panjang lebar lagi mengetik, mari kita langsung saja menjabarkan fungsi-fungsi string yang ada pada MySQL sebagian.

1. ASCII()
Fungsi ASCII() adalah mengubah sebuah karakter menjadi nilai dari sebuah ASCII-nya. Misalkan jika kita menjalankan SELECT ASCII('A'), maka akan menghasilkan nilai 65, yang mana kita telah ketahui bersama bahwa kode atau nilai ASCII dari 'A' adalah 65.

2. CHAR()
Fungsi CHAR() adalah berlawanan dari fungsi ASCII(), yang mana isi parameter (argument) dari fungsi CHAR() adalah sebuah nilai ASCII-nya dan kemudian akan menghasilkan sebuah karakter dari nilai ASCII tersebut. Misalkan jika kita menjalankan  SELECT CHAR('65'), maka akan menghasilkan sebuah karakter 'A', yang mana kita telah ketahui bersama bahwa karakter 'A' memiliki nilai ASCII 65.

3. FORMAT()
Fungsi FORMAT() adalah fungsi untuk mengatur jumlah digit di belakang koma dari suatu nilai integer, decimal atau double. Pembulatannya adalah menggunakan pembulatan ke atas. Misalkan
kita menjalankan SELECT FORMAT(12345.678, 2), maka akan menghasilkan 12,345.68 yang terbilang "Dua Belas Ribu Tiga Ratus Empat Puluh Lima Koma Enam Puluh Delapan" dengan ketelitian 2 digit di belakang.

4. CONCAT()
Fungsi CONCAT() ini bisa dibilang adalah fungsi yang cukup sering digunakan terkait perihal menyambungkan atau menggabunggkan dua string atau lebih. Misalkan kita menjalankan SELECT CONCAT('Tio',' ', 'Satrio',' ', 'Wicaksono'), maka akan menghasilkan Tio Satrio Wicaksono. Sebenarnya untuk masalah menggabungkan dua string atau lebih, kita juga bisa melakukannya dengan tanpa fungsi ini, melainkan dengan cara seperti ini.SELECT 'Tio'  ' '  'Satrio'  ' '  'Wicaksono', itu juga akan menghasilkan hasil yang serupa yaitu Tio Satrio Wicaksono. Namun, semua kembali kepada individu masing-masing, untuk sisi performa, saya pribadi belum dapat merekomendasikan yang mana yang lebih baik.

5. REPEAT()
Fungsi REPEAT() adalah fungsi untuk mengulang karakter atau string dengan sejumlah yang kita inginkan. Misalkan kita menjalankan SELECT REPEAT('*', 3), maka akan menghasilkan "***
".
6. REVERSE()
Fungsi REVERSE() adalah fungsi untuk memutar balik sebuah string. Misalkan kita menjalankan SELECT REVERSE('zyxwvutsrq'), maka akan menghasilkan qrstuvwxyz

7. SUBSTRING()
Fungsi SUBSTRING() adalah fungsi yang bisa dibilang paling sering digunakan, fungsinya adalah untuk mengambil sebagian karakter dari sebuah string, pertama ditentukan mulai dari mana posisi karakter pengambilannya, kemudian seberapa banyak jumlah pengambilannya, terhitung pengambilannya dari kiri ke kanan. Misalkan kita menjalankan SELECT SUBSTRING('Satrio', 3, 4), maka akan menghasilkan trio

Cukup sekian terlebih dahulu, sebenarnya masih banyak lagi fungsi-fungsi string pada MySQL, namun menurut saya ada beberapa fungsi yang memiliki manfaat yang sama. Namun di lain waktu saya akan melanjutkan lagi dalam penjabaran-penjabaran fungsi MySQL yang lainnya. Terimakasih dan semoga bermanfaat.

Sabtu, 21 Maret 2015

4 Tips Optimalisasi Java Programming

Kembali lagi dengan saya, kali ini saya akan berbagi sedikit tentang bagaimana menulis code program yang baik pada Java Programming. Terkadang kita memiliki suatu kebiasaan - kebiasaan saat menulis code yang mana sebenarnya kebiasaan-kebiasaan tersebut perlu diubah, karena kemungkinan dapat membebani proses waktu eksekusi ataupun membebani memory yang terpakai pada komputer kita. Selain itu, dari cara penulisan code yang kita buat tersebut, dapat mempengaruhi terciptanya bugs atau tidak pada program yang nanti kita develop. Berikut langsung saja saya utarakan tips-tips yang saya ketahui untuk dibagikan kepada teman-teman khususnya Java Developer.

1. Hindari membuat object yang tidak sedang dibutuhkan
Terkadang kita suka membuat object dari suatu kelas tanpa mempertimbangkan terlebih dahulu kapan dan dimana sebenarnya object tersebut digunakan. Misal lihat cuplikan code berikut ini.

1:  import java.util.ArrayList;  
2:  public class UnnecessaryObject {  
3:    private ArrayList listNama = new ArrayList();    
4:  }  

Dapat kita lihat pada contoh code tersebut, object dari kelas ArrayList dibuat langsung pada saat pendeklarasian variable dengan nama "listNama". Ini akan membebani penggunaan memory yang seharusnya akan lebih baik jika dituliskan seperti ini.

1:  import java.util.ArrayList;  
2:  public class UnnecessaryObject {  
3:    private ArrayList listNama;    
4:    void insertListNama(){  
5:      if(listNama == null){  
6:        listNama = new ArrayList();  
7:      }  
8:      /* code sesuai kebutuhan developer */  
9:    }  
10:  }  

Kita asumsikan saja, misal object listNama dari kelas ArrayList tersebut dibutuhkan saat pemanggilan fungsi insertListNama, kemudian barulah kita buat object listNama tersebut dari ArrayList. Penulisan seperti ini akan lebih baik dalam efisiensi penggunaan memory pada komputer kita.

2. Sebisa mungkin menggunakan Standard Library
Pada saat menulis code sebuah program, kita pasti sering menemui permasalahan dan saat mencari solusi dari permasalahan tersebut, kita memikirkan seperti apa langkah-langkah yang harus dilakukan dan fungsi apa yang harus dipakai, apakah ada fungsi dari Java yang dapat menjawab kebutuhan kita untuk menyelesaikan permasalahan tersebut atau tidak? kalau tidak ada, apakah kita harus membuatnya sendiri untuk menjawab kebutuhan kita dalam menyelesaikan permasalahan pada program kita tersebut?

Hemat saya, sebisa mungkin kita cari terlebih dahulu fungsi yang sudah tersedia pada Java yang kita miliki. Karena bagaimanapun, fungsi-fungsi yang sudah tersedia secara default dari Java telah teruji, telah melalui tahap debug yang baik, dan pastinya akan lebih meminimalisasi bugs pada program yang akan kita buat. Jika memang tidak ada pada Java itu sendiri, mungkin ada developer lain yang concern pada pembuatan library Java tambahan. Misalkan seperti Google, Dia membuat Library Collection sendiri Google Collection seperti yang dimiliki Library Java Collection, yang konon diperuntukan bagi developer Java yang lebih advanced. Karena Google Collection memiliki fungsi-fungsi yang lebih advanced lagi dibandingkan dari Library Java Collection itu sendiri.

3. Penggunaan String
Penggunaan String ternyata dapat mengurangi perfomance program, seperti saat melakukan penyambungan String atau Concatenation dengan menggunakan operator "+" di dalam loop. Selain itu pada saat membuat sebuah object dari String dengan menggunakan constructor dari kelas String itu sendiri dapat mengurangi pula perfomance program kita. Berikut seperti ini contoh codenya yang dimaksud.

1:  public class ObjectString {  
2:  //slow instantiation  
3:  String slow = new String("Satrio Wicaksono");  
4:  //fast instantiation  
5:  String fast = "Satrio Wicaksono";  
6:  }  

Pada inisialisasi di baris 3, pembuatan object seperti itu pada String dapat mengurangi perfomance program, sedangkan pada inisialisasi di baris 5 dapat memiliki perfomance lebih baik dibandingkan dengan inisialisasi di baris 3.

4. Sebisa mungkin menggunakan tipe data Primitif dari pada Wrapper class
Wrapper class tidak hanya menyimpan value saat melakukan assignment, sehingga jika dibandingkan dengan tipe data primitif jelas lebih cepat karena hanya menyimpan value saja. Selain itu, terkadang saat menggunakan Wrapper Class, seorang dapat saja lebih memungkinkan menemukan bugs, misalnya dapat dilihat pada contoh code berikut ini.

1:  public class WrapperClass {  
2:    public static void main(String[] args) {  
3:      int x = 28;  
4:      int y = 28;  
5:      Integer x1 = new Integer(28);  
6:      Integer y1 = new Integer(28);  
7:      System.out.println(x == y);  
8:      System.out.println(x1 == y1);  
9:    }  
10:  }  

pada baris ke 7 akan menghasilkan output "true", sedangkan pada baris ke 8 akan menghasilkan output "false". Lebih baik jika menggunakan Wrapper class saat inisialisasi langsung saja sehingga menjadi seperti ini "Integer x1 = 28". Namun tetap jika menggunakan Wrapper class, beban memory lebih banyak dibandingkan jika menggunakan tipe data primitif.

Sekian dari saya kurang lebihnya sekiranya dapat dimaafkan. Terimakasih dan semoga bermanfaat :D

Minggu, 15 Maret 2015

Perbedaan List, Set dan Map Pada Java

Pada pemrograman apapun, kita sebagai seorang penulis code program pasti tidak asing dengan istilah array. Array pada dasarnya adalah suatu tumpukkan data atau nilai yang memiliki index. Pada tutorial kali ini saya akan mencoba membahas tentang perbedaan jenis array seperti List, Set dan Map pada Java. Ketiga jenis array ini memiliki karakteristik masing-masing yang berbeda. Saya tidak akan membahas array primitif seperti String [] sNamaVar, int [] iNamaVar dan lain-lain yang mendeklarasikannya selalu menggunakan "[]". Saya menyebutnya contoh-contoh tersebut adalah array primitif. Langsung saja kita mulai tutorial kali ini tanpa berbasa-basi lagi.

List
List adalah jenis array yang membolehkan adanya value duplicate atau nilai yang sama dalam index yang berbeda. List memiliki beberapa fungsi-fungsi yang cukup membantu dalam proses pengolahan nilai-nilai seperti fungsi clear() untuk menghapus semua element atau value pada list, melakukan insert value pada index element tertentu dengan fungsi add(int index, Object element), menghapus value pada index element tertentu dengan fungsi remove(int index) dan masih banyak lagi fungsi lainnya yang mungkin bisa menjawab sesuai kebutuhan kita.

Set
Set adalah jenis array yang tidak membolehkan adanya value duplicate, saat ada insert value yang sudah ada sebelumnya, maka value itu akan terotomatisasi dibuang salah satunya dan akhirnya value tersebut hanya tetap ada satu saja. Set juga memiliki beberapa fungsi yang cukup membantu, seperti clear(), add (Object e), remove(Object e) dan masih banyak lagi fungsi-fungsi lainnya jika teman-teman ingin lebih mengeksplorasi sendiri.

Map
Map adalah jenis array yang indexnya tidak hanya nilai integer 0,1,2 dan seterusnya, melainkan kita dapat melakukan custom pada nilai indexnya, asalkan nilai indexnya adalah selalu unik. Pada jenis array ini masih memiliki kemungkinan terdapat value yang sama (duplicate), karena pada Map ini lebih menekankan index yang harus unik. Jika di dalam pemrograman PHP, kita sering juga menyebut tipe array berjenis ini adalah array asosiatif, selalu memiliki index atau key kemudian value. Map juga memiliki fungsi-fungsi yang cukup membantu seperti clear(), put(Object key, Object value), containsKey(Object key) yaitu mengecek apakah ada elemen pada Map berdasarkan Key atau indexnya, containsValue(Object value) yaitu mengecek apakah ada elemen pada Map berdasarkan Value.

Berikut adalah contoh program yang telah saya buat yang mungkin dapat membantu penjelasan saya di atas.

1:  package collectiondifference;  
2:  import java.util.ArrayList;  
3:  import java.util.HashMap;  
4:  import java.util.HashSet;  
5:  import java.util.List;  
6:  import java.util.Map;  
7:  import java.util.Set;  
8:  public class CollectionDifference {  
9:    public static void main(String[] args) {  
10:      System.out.println("***List***");  
11:      List arrList = new ArrayList();  
12:      arrList.add("1");  
13:      arrList.add("1");  
14:      arrList.add("2");    ;      
15:      for(int i = 0; i < arrList.size(); ++i){  
16:        System.out.println(arrList.get(i));  
17:      }      
18:      System.out.println("***Set***");  
19:      Set arrSet = new HashSet();          
20:      arrSet.add("1");  
21:      arrSet.add("1");  
22:      arrSet.add("2");          
23:      Object [] arrFromSet = arrSet.toArray();  
24:      for(int i = 0; i < arrFromSet.length; ++i){  
25:        System.out.println(arrFromSet[i]);  
26:      }  
27:      System.out.println("***Map***");  
28:      Map arrMap = new HashMap();      
29:      arrMap.put(0, "1");  
30:      arrMap.put(1, "1");  
31:      arrMap.put(2, "2");      
32:      for(int i = 0; i < arrMap.size(); ++i){  
33:        System.out.println(arrMap.get(i));  
34:      }  
35:    }  
36:  }  

Output dari program tersebut jika berhasil dijalankan, akan kurang lebih seperti di bawah ini.

 ***List***  
 1  
 1  
 2  
 ***Set***  
 2  
 1  
 ***Map***  
 1  
 1  
 2  

Demikian tutorial dari saya, semoga bermanfaat bagi para pecinta kopi jawa. Sampai jumpa pada tutorial selanjutnya.

Jumat, 13 Maret 2015

QLabel Clickable Pada QT Designer

Kembali lagi dengan saya, kali ini saya akan mencoba berbagi tentang bagaimana caranya membuat object dari QLabel menjadi dapat menerima signal clicked. Sebelum jauh melangkah untuk memulai tutorial kali ini, saya akan memberi tahu sekilas tentang Method Connection pada QT adalah dengan menggunakan Signal dan Slot. Intinya adalah suatu metode yang menghubungkan atau mengkomunikasikan antara object satu ke object yang lain. Signal adalah suatu metode yang memberikan sinyal atau event atau kejadian dari suatu object yang dilakukan bisa dari user atau program itu sendiri kepada object yang lain. Slot adalah suatu tindakan atau respon dari object yang telah diberikan signal dari object lain tersebut.

Pada QLabel, tidak ada signal yang menerima event clicked, sehingga kita harus melakukan custom pada widget atau object QLabel tersebut. Langsung saja untuk tau bagaimana melakukan customnya, kita mulai tutorial kali ini.

Kita melanjutkan program pada tutorial sebelumnya yang berjudul Insert Qlabel Dengan Image Pada QT. Pada tutorial sebelumnya kita sudah membuat program sederhana dengan memasukkan gambar pada sebuah QLabel. Nantinya pada program tersebut untuk QLabel yang telah dibuat akan dapat menerima signal clicked dari user dan akan merespon signal clicked tersebut. Pertama kali yang akan kita lakukan adalah dengan menambahkan sebuah file baru dengan cara seperti gambar berikut ini.

Gambar Add New File
Setelah memilih pilihan Add New. Maka kita akan diminta memilih untuk membuat file baru apa yang kita butuhkan. Kemudian pilihlah pilihan seperti gambar berikut ini.

Gambar New File Class
Setelah itu pilih Choose dan akan diminta memberikan nama class baru tersebut. Pada tutorial ini, class baru tersebut saya beri nama Clickable. Lihat seperti gambar berikut ini

Gambar Define New Class
Setelah sudah seperti gambar di atas, langsung saja pilih Next dan Finish. Kemudian akan bertambah file yaitu clickable.h pada Headers dan clickable.cpp pada Sources. Setelah penambahan file class selesai, selanjutnya kita akan menambahkan beberapa baris code pada masing-masing file seperti clickable.h, clickable.cpp, mainwindow.h dan mainwindow.cpp.

Berikut adalah penambahan atau modifikasi code pada file clickable.h

1:  #ifndef CLICKABLE_H  
2:  #define CLICKABLE_H  
3:  #include <QLabel>  
4:  class Clickable : public QLabel  // Kelas Clickable menjadi turunan dari class QLabel
5:  {  
6:    Q_OBJECT // sebuah macro yang berkepentingan dalam signals dan slots untuk object 
7:  public:  
8:    explicit Clickable(QWidget *parent=0);  
9:    ~Clickable();  
10:  signals:  
11:    void clicked();  // agar QLabel nanti dapat menerima signal clicked
12:  protected:  
13:    void mousePressEvent(QMouseEvent *ev); // bermula dari mousePressEvent, signal clicked akan dipancarkan (emit)  
14:  };  
15:  #endif // CLICKABLE_H  

Setelah file clickable.h ditambah atau dimodifikasi codenya, maka selanjutnya adalah file clickable.cpp. Berikut adalah penambahan atau modifikasi code pada file clickable.cpp.

1:  #include "clickable.h"  
2:  Clickable::Clickable(QWidget *parent) : QLabel(parent)  
3:  {  
4:  }  
5:  void Clickable::mousePressEvent (QMouseEvent *ev){  
6:    emit clicked();  
7:  }  
8:  Clickable::~Clickable()  
9:  {  
10:  }  

Pada baris 5-6 berguna saat sebuah event mouse diclick pada QLabel, maka akan memancarkan signal clicked. Itulah yang membuat QLabel dapat menerima signal clicked. Setelah menambah atau memodifikasi code pada clickable.cpp, selanjutnya adalah sedikit menambahkan beberapa baris code pada file mainwindow.h. Berikut adalah penambahan atau modifikasi code pada file mainwindow.h

1:  #ifndef MAINWINDOW_H  
2:  #define MAINWINDOW_H  
3:  #include <QMainWindow>  
4:  namespace Ui {  
5:  class MainWindow;  
6:  }  
7:  class MainWindow : public QMainWindow  
8:  {  
9:    Q_OBJECT  
10:  public:  
11:    explicit MainWindow(QWidget *parent = 0);  
12:    ~MainWindow();  
13:  private slots:  
14:    void on_lblHello_clicked();  
15:  private:  
16:    Ui::MainWindow *ui;  
17:  };  
18:  #endif // MAINWINDOW_H  

Penambahan baris code pada file mainwindow.h ini adalah pada baris 13-14, yaitu berguna saat QLabel menerima atau dipancarkan signal clicked, maka sebuah slot (yang merespon signal) akan melakukan sebuah perintah. Slots yang kita buat sendiri yang berhubungan dengan object yang kita buat dari Qt Designer, memiliki pola penamaan yang harus kita setujui bersama. Pola pembuatan slotsnya yaitu on_(nama object)_(nama signal). Karena pada program di tutorial ini object QLabel adalah bernama lblHello dan signalnya adalah clicked, sehingga demikian slotsnya menjadi on_lblHello_clicked. Setelah penambahan baris code pada file mainwindow.h, maka selanjutnya terakhir adalah penambahan baris code pada file mainwindow.cpp. Berikut adalah penambahan baris code dari file mainwindow.cpp.

1:  #include "mainwindow.h"  
2:  #include "ui_mainwindow.h"  
3:  #include <QMessageBox>  
4:  #include <QString>  
5:  MainWindow::MainWindow(QWidget *parent) :  
6:    QMainWindow(parent),  
7:    ui(new Ui::MainWindow)  
8:  {  
9:    ui->setupUi(this);  
10:  }  
11:  void MainWindow::on_lblHello_clicked (){  
12:    QMessageBox::information (this, QString("Information"),QString("Gambar QLabel telah diclick !"), QMessageBox::Ok);  
13:  }  
14:  MainWindow::~MainWindow()  
15:  {  
16:    delete ui;  
17:  }  

Penambahan baris code pada file mainwindow.cpp ini terletak pada baris 11-13, berguna untuk saat QLabel tersebut diclick oleh user, maka akan menampilkan suatu perintah, yang mana perintah dari baris 11-13 adalah untuk menampilkan alert atau QMessageBox dengan judul "Information", pesannya "Gambar QLabel telah diclick !" dan memiliki tombol Ok. Setelah penambahan baris code pada semua file selesai. Maka selanjutnya kita masuk ke dalam mainwindow.ui. Kemudian click kanan pada QLabel yang sudah berada di form, pilih Promote to. Setelah memilih Promote to, maka akan tampil window seperti berikut ini.

Gambar Window Promoted Widgets
Pada isian Promoted class name, masukkan nama file yang telah kita buat pada awal tadi, kalau di dalam tutorial ini, nama kelasnya adalah Clickable. Ingat ! penamaan kelasnya case-sensitive. Setelah itu pilih Promote.

Semua langkah sudah selesai dilakukan, tinggal dilakukan compile dan dieksekusi saja programnya. Maka jika berhasil akan tampil program yang seperti ini saat QLabel diclick.

Gambar Output Program
Demikian tutorial dari saya, semoga bermanfaat dan terimakasih.

Sabtu, 07 Maret 2015

Insert QLabel Dengan Image Pada QT Designer

Pada tutorial perdana kali ini, saya akan mencoba berbagi tentang bagaimana menyisipkan gambar pada QLabel di QT Designer. Sebelum masuk kepada inti tutorial ini, saya ingin bercerita sedikit tentang apa itu QT (dibaca : Kiut) ? QT adalah suatu Toolkit atau sebuah Framework Cross-Platform untuk membuat program dengan GUI (Graphical User Interface) yang umumnya berbasis bahasa pemrograman C++.

Oke tanpa berbasa-basi lagi, langsung saja saya mulai tutorial perdana saya ini, bismillah. Sebelumnya saya memberitahukan QT yang saya pakai adalah QT 5.4.0, bagi teman-teman yang belum memilikinya bisa didownload langsung di Download QT 5.4 x86 untuk Windows. Cara menginstallnya cukup mudah, tinggal pilih tombol next saja selama masih ada tombol next, lalu jangan lupa saat request apa yang diinstall, ceklis semua yang bisa diceklis agar semua yang dibutuhkan nanti ke depannya sudah tersedia semua seperti development untuk Android dan lain-lainnya.

Mari kita mulai, pertama kali membuka QT Creator teman-teman yang sudah terinstall. Lalu pilih New File or Project, isikan nama project sesuai dengan keinginan teman-teman. Kalau sudah selesai, akan muncul tampilan seperti ini pada main window project QT Creator.

Gambar Main Window Project QT Creator
Pada project yang saya buat, saya namakan project HelloWorld. Kemudian click kanan pada nama project yang telah teman-teman buat, jika pada saya, berarti click kanan pada HelloWorld, pilih Add New, lalu pada Files and Classes pilih QT dan pilih QT Resource File. Kemudian beri nama file tersebut. QT Resource File ini nantinya akan menjembatani antara alamat file yang akan digunakan dengan program yang memang selalu membutuhkan file external seperti gambar, audio dan lain-lainnya. Penggunaan QT Resource File ini akan membuat kita tidak perlu takut akan kesalahan pembacaan alamat file ketika suatu program dijalankan di berbeda platform.

Tambahkan prefix dengan memilih tombol Add, lalu masukan gambar yang diinginkan untuk nantinya digunakan pada QLabel. Berikut contoh jika sudah dimasukkan file gambar ke dalam QT Resource File.

Gambar QT Resource File
Setelah gambar sudah dimasukkan ke dalam QT Resource File, kemudian kita masuk ke dalam design editor QT dengan cara cukup mengclick dua kali file yang berada pada folder Forms, berformat .ui. Jika pada yang saya buat, maka saya mengclick dua kali pada mainwindow.ui. Lalu kita akan berpindah ke pada tampilan design editor QT

Gambar QT Designer Editor
Pada QT Designer Editor, untuk yang sebelah kiri adalah kumpulan object yang nantinya akan kita bisa pakai ke dalam sebuah form. Cara menggunakannya hanya tinggal melakukan drag and drop saja ke dalam form, persis seperti saat melakukan desain form pada VB.Net dengan IDE nya Visual Studio. Setelah QLabel (Note: Label di designer editor adalah QLabel) sudah berada di form, kemudian pada bagian properties, pilihlah pixmap dan setelah dipilih, kita akan diminta browsing file gambar yang kita inginkan, pilihlah QT Resource File yang sebelumnya telah kita buat. Formatnya adalah .qrc. Setelah dipilih, maka selanjutnya pilihlah gambar yang berada pada file yang berformat .qrc tersebut yang telah kita buat. Setelah semuanya selesai, maka program bisa dicompile dan dirun. Hasilnya akan kurang lebih seperti ini.

Gambar Hasil Output Program HelloWorld
Sekian dari tutorial perdana saya ini, semoga dapat bermanfaat, jangan lupa untuk tetap menanti tutorial saya selanjutnya ya :D .