Showing posts with label C plus plus - QT. Show all posts
Showing posts with label C plus plus - QT. Show all posts

Saturday, 14 June 2014

C++ QT No.6: Membuat New Window dari MenuBar


Telah kita bahas di awal tutorial bahwa, dengan Qt kita bisa memilih beberapa Base Class saat membuat project Qt, diantaranya adalah QMainWindow, QWidget, dan QDialog. Di antara ketiga tersebut yang paling unik adalah QMainWindow, karena Base Class ini secara otomatik membuatkan beberapa bar tambahan otomatis untuk kita yaitu MenuBar, ToolBar, dan StatusBar.

Pada tutorial kali ini, kita akan mencoba mengotak – atik MenuBar untuk membuat sebuah window Dialog baru.



Intinya, kita akan membuat sebuah Sub Menu pada Menubar, kemudian kita membuat sebuah event (ingat signal and slot pada tutorial sebelumnya) terhadap submenu yang bila di click maka akan membuat window baru.

Hal seperti ini dinamakan event triggered :)

Mari kita langsung membuat sebuah project Qt Widget Application dengan Base Class nya adalah QMainWindow. Di sini sebagai contoh kita akan membuat sebuah project “MetuProject” dan “Percobaan1” sebagai class nya,
Lihat gambar 1:


Lihat gambar 2:


Hem, kayaknya kita tidak perlu mengupas code – code default dari QT Framework ini, untuk yang mungkin belum paham kode – kode ini silahkan browsing di Google yach, :)

Mari langsung kita menuju ke QT Ui yaitu “percobaan1.ui”, silahkan anda double click untuk membuka file tersebut pada Qt Designer.

Lihat gambar 3:


Anda bisa lihat pada screenshot di atas, secara default QMainWindow Class akan memberikan sebuah Menubar dan Toolbar untuk kita, nah, yang akan kita otak atik di sini adalah MenuBar nya. Mari kita tambahkan sebuah sub menu “New Window”. Membuatnya pun sangat mudah sekali, silahkan double click, isikan menu, tekan enter, isikan submenu, mudah bukan?

Lihat gambar 4:


Coba perhatikan, saat kita membuat sebuah sub menu (ext: New Window) maka window action editor yang terletak di sebelah bawah dari window akan membuat sebuah action secara otomatis.

Lihat gambar 5:


Anda bisa lihat, secara otomatis kita membuat “actionNew_Window”. Dari nama action inilah nanti kita bisa menambahkan signals and slots.

Nah, mari kita berikan signals and slots, untuk menambahkannya, silahkan click kanan pada action yang sudah kita buat kemudian pilih “go to slots..”.

Lihat gambar 6:


Kemudian, pada signals window, kita perlu menambahkan triggered events, ,,
Lihat gambar 7:


Signals Triggered ini digunakan seperti onclick pada button. Nah, setelah kita memberikan signals and slots ini, Qt Creator secara otomatis membuat sebuah slots yang diletakkan pada file C++ kita.
Lihat gambar 8:


Nah, sekarang coba run code anda, click sub menu “New Window” yang anda buat, yup apa yang terjadi? Tentu tidak terjadi apa apa karena function kita di atas masih kosong tidak ada declarasi sama sekali :)
Skenario kita di awal adalah kita akan menampilkan sebuah Window baru saat sub menu ini diclick.

Maka dari itu, kita akan membuat sebuah Qt Widget Baru, yuk kita mulai…
Untuk menambahkan Qt Widget baru, anda bisa click kanan project – kemudian pilih Add New Item..

Lihat gambar 9:


Kemudian dari window yang mucul, pilihlah Qt , kemudian Pilih Qt Designer Form Class.

Dengan ini nanti kita akan membuat sebuah .ui baru dengan beberapa class. Di sini saya membuat class dengan nama OkieDialog.

Bila sudah selesai nanti hasilnya adalah seperti ini:

Lihat gambar 10:


Anda bila mengamati dan melihat kode – kode dari file – file yang berhasil kita tambakan ini.
Lalu bagaimana memanggil okiedialog ini supaya muncul saat kita mengeclick submenu tadi?
Mudah,
Coba lihat function yang kita buat tadi:

Lihat gambar 11:


Dengan menambahkan header, dan membuat object baru dari OkieDialog, kita sudah bisa memanggil / membuat sebuah window okiedialog.
Mudah bukan???
Sebetulnya cara ini bukan satu – satunya untuk memanggil / membuat window okiedialog, masih banyak sekali kode – kode yang bisa anda coba, cobalah browsing :)

Semoga bermanfaat,
Salam,

Monday, 9 June 2014

C++ QT No.5: Apa itu signals dan slots?


Dalam pemrograman apapun kita mengenal event dan event handler, ada juga event dan callback. Nah, pada QT, kita juga mengenal hal yang sama tapi berbeda, yaitu signals dan slots. Inilah yang membedakan Framework QT dengan Framework C++ yang lain. Bisa dibilang signals seperti event, sedangkan slots seperti callback function.


Pernahkah anda mencoba bahasa pemrograman lain, C# misalnya, bahasa modern tingkat tinggi yang berjalan pada .NET ini tidak mengenal signals and slots, tapi mengenal event.

Bila anda seorang web developer, pasti juga sangat familiar dengan event dan event handler pada Javascript / Jquery / Css, misalnya pada komponen button, maka anda bisa temui beberapa event seperti onClick, onMouseOver, onMouseOut, dan lain sebagainya.

Begitu pula bila anda seorang Flash Developer (Actionscript), anda akan menemukan hal yang sama untuk komponen button.

Saya pribadi lebih suka menyebut perlakuan terhadap komponen button ini dengan nama event, sedangkan fungsi yang dipanggil saat event terjadi adalah event handler. :)

Meski sebetulnya banyak yang menyebut dengan event dan function callback :P

Nah, signals dan slots pun demikian, signals bisa dibilang event, sedangkan slots bisa dibilang function callback atau event handler atau fungsi yang terpanggil saat kejadian terjadi.

Perbedaan antara Slots dengan Callback atau Event handler adalah Callback tidak Type Safe, kita tidak tahu apakah event akan memanggil Callback dengan Argument yang tepat.

Signal dan Slot ini digunakan untuk berkomunikasi antar object. QT Widgets memiliki predefined signals and slots (bawaan/default), kitapun bisa membuat slot atau signal milik kita sendiri. Sebagai contoh slots dari komponen QPushButton misalnya, QPushButton ini memiliki banyak slot baik slot dari komponen itu sendiri maupun slots yang diwariskan dari dari class lain QAbstractButton, QWidget, QObject, seperti terlihat pada screenshot help berikut ini.

Lihat gambar 1:


CONTOH 1 (SATU)

Sebagai contoh mari kita membuat sebuah project dari Qt Widgets Application, dan berikan sebuah QPushButton component pada ui nya. Kita akan mencoba untuk menambahkan sebuah signal saat komponen ini diclick.

Untuk menambahkan sebuah slot saat komponen diclick kita tinggal click kanan komponen tersebut kemudian pilih Go To Slots… seperti terlihat pada gambar berikut:

Lihat gambar 2:


Dari window Go to slot yang muncul saya akan mencoba untuk memilih signal clicked(), artinya memberikan event saat komponen QPushButton tadi diclick. Maka kita akan menuju ke kode seperti pada gambar berikut ini.
Lihat gambar 3:


Nah, itu adalah slot dari signal clicked() kita tadi, slot bisa dibilang merupakan juga sebuah function. Ya, slot ini adalah functions. Slot bisa digunakan untuk menerima signal tetapi slot ini juga merupakan normal member functions.

Silahkan anda tambahkan kode anda pada slot/function diatas, nanti pasti saat ada signal clicked() dari QPushButton maka function ini akan dieksekusi, contoh pada screenshot berikut ini,

Lihat gambar 4:


Bila anda menggunakan GUI dalam QT Designer untuk menghubungkan antar komponen dengan signal and slot sangatlah mudah,

CONTOH 2 (DUA)

Sebagai contoh, misalnya kita membuat sebuah slider dan sebuah progressbar pada ui kita.
Lihat gambar 5:


Sangat mudah sekali untuk menambahkan signal and slot, pada scenario ini kita ingin menambahkan sebuah signal terhadap slider, dan saat signal terjadi maka sebuah function harus dipanggil untuk menyerasikan progressbar.
Lihat gambar 6:


Nah, pastikan anda mengclick tombol untuk ke mode edit slot, kemudian tinggal click horizontal slider – kemudian drag ke slider. Maka otomatis kita telah menghubungkan kedua buah object dengan Signal and Slots.
Cobalah anda lepaskan drag anda, maka akan tampil sebuah window connection seperti berikut ini,
Lihat gambar 7:


Nah, pada window connection, saya memilih signal valueChanged(int) untuk horizontalslider, kemudian slot untuk progressBar adalah setValue(int).

Setelah anda selesai cobalah preview dengan debug, saat anda menggeser slider maka progressbar pun juga ikut bertambah.

Lihat gambar 8:


Mudah bukan?
Itu diatas tadi menggunakan UI, bagaimana kalo kita tidak menggunakan UI tetapi mengetikan kode nya (direct programming)?

connect(ui->horizontalSlider,
SIGNAL(valueChanged(int)),
ui->progressBar,
SLOT(setValue(int)));

Ini merupakan koneksi signal dan slot antar komponen.
Lihat gambar 8.2:


Mari kita lanjut…. Yuuukkk….

CONTOH 3 (TIGA)

Perhatikan kode berikut ini, pertama adalah screenshot kode pada C++ plain, kedua adalah kode slot dan signal pada C++ Qt
Lihat gambar 9:


Ini adalah plain C++ text code , anda bisa lihat, kita membuat sebuah contructor dengan:

Counter(){m_value = 0;}

Pada contructor ini terlebih dahulu kita mensetting supaya nilai dari variable m_value adalah nol.

Berikutnya kita membuat sebuah function int value(){return m_value;} , function ini digunakan untuk mereturn nilai dari m_value nantinya.

Kemudian function berikutnya adalah void setValue(int value); yang nantinya digunakan untuk meng-set nilai dari m_value; tapi ingat, function ini baru declarasi , kita belum mengetikan kode untuk fungsi ini :)
Nah, mari kita bandingkan dengan C++ code pada QT yang bisa kita berikan Signals and Slots.

Lihat gambar 10:


Nah,,,,, bisa anda lihat, semua function sama dengan C++ kode plain sebelumnya, hanya saja kita memberikan sebuah type tertentu untuk function,

Untuk function void valueChanged(int newValue); kita berikan sebagai signals, sedangkan setValue() kita jadikan sebuah slots.

Ah, hampir lupa, semua class yang mengandung Signals and Slots harus menyebutkan Q_OBJECT di bagian awal dari declarasi. Dan class ini harus diturunkan dari QOBJECT :)

Contoh ini saya ambil dari QT Help,

Sekarang kita akan mencoba untuk mengetikan kode untuk slot setValue(),
Lihat gambar 11:


Nah, ini adalah slot dari setValue, bisa anda lihat, intinya, bila m_value (nilai default) tidak sama dengan value (nilai baru) maka m_value diganti nilainya dengan value.

Emit digunakan untuk meng-emit signals valueChanged();

Kemudian, mari kita mencoba memanggil signals and slots ini dengan menggunakan struktur kode connection yaitu:
Connect(komponenPertama, signal(), komponenKedua, slot());

Lihat gambar 12:


Bila merujuk pada aturan penulisan signals and slots ini, maka anda bisa lihat kembali pada contoh dua, kita mengetikan seperti berikut ini untuk koneksi antara HorizontalSlider dengan ProgressBar:

Connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->progressBar,SLOT(setValue(int)));


OK, akhirnya sekian tutorial singkat tentang SIGNALS AND SLOTS, untuk contoh yang lain silahkan anda bisa membaca pada HELP QT ataupun bisa mencari referensi dari mesin pencari seperti google.
Semoga bermanfaat,
Salam,



Saturday, 26 April 2014

C++ QT No.4: Mengenal macam - macam Teknologi User Interface (UI) pada QT


Tahukah anda, interaksi antara pengguna dengan logic software dinamakan User Interface disingkat dengan UI. UI ini berwujud bisa sebuah window, bisa tombol, bisa sebuah textarea dan lain sebagainya. Inilah komponen User Interface. Sebagai seorang programmer (pembuat program aplikasi), terlebih programmer yang menggunakan Qt, maka anda akan disediakan beragam UI yang bisa anda pilih sesuai kebutuhan. Ada QtWitget, QtQuick dan QtWebKit. Ketiganya dapat anda pilih sesuai kebutuhan sebagai UI progam anda. Ingin tahu bedanya? Mari kita simak.


Sama seperti Visual Studio yang menyediakan beragam Amazing User Interface tingkat tinggi sampai pengguna bingung memilihnya, Qt menyediakan tiga UI yang dapat kita gunakan. Anda pun bisa menggabungkan ketiganya. :)

Qt Creator, sebuah Editor Qt adalah contoh dari perpaduan multiple teknologi UI ini. Coba amati Qt Creator yang selalu anda gunakan tersebut.

Qt Creator menggunakan teknologi QtWidget sebagai User Interface pada menu dan kotak dialog nya. Coba perhatikan kembali Welcome Screen dari Qt Creator, lihat, tampilannya berbeda bukan, bahkan button nya sangat berbeda dan tidak biasa, ini karena UI untuk Welcome Screen menggunakan teknologi QtQuick. Lalu dimana letak penggunaan QtWebkit?

Yup, perhatikan Help Documentation nya, wow, ini seperti halaman web yang menyatu dengan softwarenya bukan? Ya, teknologi QtWebKit digunakan dalam pembangunan Help Documentation ini.

Mari kita lanjut....

A.Teknologi User Interface QtQuick
QtQuick merupakan salah satu Teknologi UI dari Qt yang menggunakan QML dan JavaScript sebagai penyusun UI nya, kita sudah membahas ini pada tutorial sebelumnya [[C++ QT No.3: Apa itu Qt Quick Application?]]

Mirip seperti XAML yang dikembangkan Microsoft , QML merupakan teknologi binding dari Qt yang memfasilitasi pengguna dengan visual canvas dan rendering engine nya. Teknologi UI ini sangat cocok sekali untuk Hardware Acceleration seperti OpenGL pada VGA driver kita.

Jangan salah, bila anda menggunakan QtQuick versi 2, maka memang butuh OpenGL yang disuport oleh VGA anda. OpenGL sekarang begitu terkenal, banyak games – games yang mulai menargetkan OpenGL karena begitu flexibel dan mudah. Tapi sayangnya, OpenGL ini tidak terdapat pada VGA driver bawaan OS.

Jadi jangan heran, saat anda install ulang komputer (bahkan Windows 8.1 sekalipun) anda akan menemukan bahwa tidak ada OpenGL pada VGA driver anda. Cara terbaik adalah periksa Motherboard anda dan cari driver VGA yang sesuai dengan Motherboard anda. Biasanya gratis.

Animation, Transition, Visual Effect, Shader Effect dan lain – lain merupakan fasilitas yang dapat anda kembangkan saat menggunakan QtQuick sebagai User Interface (UI) aplikasi anda.

Amazing bukan?

B.Teknologi User Interface QtWidget
QtWidget merupakan tradisional User Interface element yang biasanya terdapat dalam dekstop environment. Bila anda pengguna linux, maka UI ini merupakan bagian dari KDE. Tapi jangan salah, QtWidget sangat dinamis untuk Windows dan Mac OS. Sehingga bila anda menggunakan QtWidget sebagai UI anda maka tampilannya mirip sekali dengan UI pada OS anda.

Bila anda pengguna Windows 8.1 seperti saya dengan Amazing Flat Designnya, maka QtWidget ini menyesuaikan dengan UI OS.

Semua standar komponen untuk aplikasi seperti button, textarea, menu dan lain – lain terdapat pada QtWidget ini. Sehingga sangat cocok sekali untuk anda yang gemar membuat aplikasi tradisional standar.

Bila kita membuat aplikasi dengan QtWidget, maka saat memulai project, akan muncul pemilihan Base Class, ada tiga yaitu Class QWidget, Class QMainWindow, dan Class Qdialog.
Lihat gambar 1:


Perbedaan dari ketiga Base Class di atas adalah berikut ini:

* QWidget merupakan base class untuk semua GUI element pada QtWidget User Interface. Coba lah explorasi dan bedakan ketiganya :)

* QDialog merupakan sebuah window yang biasanya digunakan untuk mengejutkan pengguna, seperti saat window dialog muncul ketika pengguna harus memasukan input dengan benar atau hal – hal yang lain, tampilan dari Qdialog tidak berbeda dengan Qwidget, anda bisa menggunakan salah satu.

* QMainWindow, nah, ini adalah sebuah class yang sangat unik, karena menggunakan feature built in yang sangat populer seperti status bar, toolbar, dan menu bar. Cobalah membuat applikasi QtWidget dengan QmainWindow sebagai base class nya, pasti secara otomatis akan ditampilan menubar , toolbar, dan statusbar.

C.Teknologi User Interface QtWebkit
Tahukah anda bahwa web programing adalah kegiatan yang paling berkembang di dunia saat ini? Tahukah anda bahwa web koding seperti html, css, js sangat populer dan mudah digunakan dan mulai merambah ke teknologi desktop seperti Html5 dan Css3?

Lalu kenapa tidak digunakan dalam pemrograman desktop? Ya, dengan menggunakan User Interface QtWebkit ini anda bisa membuat sebuah desktop application dengan menggunakan koding web. Unik bukan?

Teknologi QtWebkit menampilkan web content melalui QML, sedangkan C++ API digunakan untuk interaksi dengan web content tersebut.

Perlu diperhatikan bersama bahwa pemilihan teknologi adalah biasa, so, tetaplah berkreasi, berikut kita kutipkan beberapa perbandingan antar tiga teknologi UI dari Qt Help Documentation.



Qt Quick / Qt Quick Controls

Qt Widgets

Qt WebKit

Comments

Used language(s)

QML/JS

C++

HTML/CSS/JS


Native look'n'feel

Yes

Yes

No

Qt Widgets and Qt Quick Controls integrate well to the underlying platform, providing a native look'n'feel on Windows, Linux, and Mac OS X.

Custom look'n'feel

Yes

No

Yes

Qt Widgets provide means for customization via style sheets, but Qt Quick is a better performing choice for user interfaces that do not aim to look native.

Fluid animated UIs

Yes

No

No

Qt Widgets do not scale well for animations, and Qt WebKit's CSS3 animations are not as powerful as Qt Quick animations. Qt Quick offers a convenient and natural way to implement animations in a declarative manner.

Touch screen

Yes

No

Yes

Qt Widgets often require a mouse cursor for good interaction, whereas Qt Quick only provides primitive building blocks that were designed with touch interaction in mind. The WebView Qt Quick component has support for multi-touch gestures to interact with web content.

Standard industry widgets

No

Yes

No

Qt Widgets provide all the bells and whistles, developed over two decades, needed for building standard industry type applications. Qt WebKit Widgets provide widgets and additional classes to render and interact with web content.

Model/View programming

Yes

Yes

No

Some MVC like concepts exist in Qt WebKit, Qt Quick provides convenient views, but Qt Widgets provide more convenient and complete frameworks. In addition to Qt Quick views, Qt Quick Controls provide a TableView.

Rapid UI development

Yes

No

Yes

Thanks to its superior productivity, Qt Quick is an excellent choice for rapid UI prototyping and development.

HW accelerated graphics

Yes

No

No

Qt Widgets provide QGLWidget for rendering OpenGL graphics, and Qt WebKit supports WebGL, but the OpenGL ES 2.0 or OpenGL 2.0 based Qt Quick Scene Graph has proven to provide the best performance for UIs and for integrating with OpenGL content.

Graphical effects

Yes

No

No

The particle system and shader effects available in Qt Quick are more flexible compared to CSS Effects and Shaders available in Qt WebKit. Qt Widgets offer very little in this area.

Rich text processing

Yes

Yes

No

Qt Widgets currently provide the most comprehensive base for implementing text editors. Qt's rich text document classes can also be utilized in Qt Quick and Qt Quick Controls' TextArea, but may require some C++ implementation.

Existing web content

No

No

Yes

Both Qt Quick and Qt Widgets prodive components for presenting simple rich text, but Qt WebKit is the right choice for presenting full-blown web content.

Mudah - mudahan bermanfaat dan sampai jumpa pada tutorial berikutnya.
Salam
Last Update 25 April 2014, 17.52 WIB

Sunday, 13 April 2014

C++ QT No.3: Apa itu Qt Quick Application?


Saat kita pertama baru mengenal Qt bahkan kebetulan kita juga seorang pemula dalam Qt, pasti akan bingung saat memulai Qt Creator. Bingung ini disebabkan karena ada beberapa pilihan type dalam project pertama yang akan kita buat. Seperti pada gambar berikut ini, type project manakah yang akan kita pilih?? Hayo pilih,,, :P
Lihat gambar:



Ada beragam pilihan saat kita akan memulai Qt,

1.Qt Widgets Application – kebanyakan bila kita akan membuat sebuah desktop app, maka pilihan inilah yang digunakan, dengan menggunakan Qt Widgets, maka kita disediakan UI yang sangat interaktif oleh Qt Designer.
Pembuatan app dengan Qt Widgets Application ini nantinya akan berdasarkan MainWindow.
Lihat gambar 1:


Dengan Qt Widgets Application ini pula, kita akan disuguhkan tampilan UI yang tidak kalah dengan Visual Studio seperti berikut ini,
Lihat gambar 2:


Sedangkan pada project, kita disuguhkan dengan tree view seperti berikut ini,
Lihat gambar 3:


Nah, hal hal di atas adalah bila kita akan membuat desktop app dengan Qt Widgets Application.
Lalu bagaimana bila kita membuat desktop app dengan Qt Quick Application? Lihat section berikutnya :)

2.Qt Quicks Application – ini adalah teknologi yang sangat unik. Kita bisa membuat sebuah desktop application dengan Javascript. Jadi sangat cocok sekali bila anda sebelumnya adalah developer web, anda bisa menggunakan tool – tool web anda untuk membuat Desktop application.

Dengan Qt Quicks Application, kita bisa menggunakan Qml yang digabungkan dengan Javascript untuk membuat applikasi. Kita pun bisa menggunakan C++ pada aplikasi ini, unik bukan?
Lihat gambar 4:


Lihat, saya menggunakan QtQuick 1.1, lihat juga, semua kode itu terdapat kode Javascript nya bukan? Lihat juga, kode – kode ini semua terbungkus dalam file qml.
Lihat gambar 5:


Nah, bila anda familiar dengan Javascript, pasti tidak sulit menguasai Qt Quick ini.
PADA TUTORIAL INI KITA AKAN MEMBAHAS TENTANG QT QUICK TERLEBIH DAHULU :)

3.Qt Console Application
Kalo yang satu ini adalah aplikasi console dengan menggunakan C++. Anda bisa melihat kita memperagakan pembuatan aplikasi dengan Console ini pada tutorial sebelumnya.

4.HTML5 Application
Kalo yang ini, kita bisa membuat sebuah desktop application dengan HTML5, Javascript, dan C++ , kita akan membahasnya nanti.

5.Qt Quick UI
Qt Quick UI digunakan untuk membuat Qml file yang nantinya bisa kita integrasikan (tidak bisa berjalan sendiri) dengan project kita. Kita juga akan membahasnya nanti.

KEMBALI KE JUDUL, pada tutorial ini kita akan membahas tentang Qt Quick Application.

NOTE:
Pada tutorial ini saya menggunakan Qt 5.2.1 dan Qt Creator 3.0.

Mungkin ada yang menjumpai problem saat men-develop Qt Quick Application, padahal semua baik – baik saja saat menggunakan Qt Widget Application, bisa melihat pertanyaan di forum ini http://qt-project.org/forums/viewthread/40896/

Mari kita lanjutkan tutorial kita,

Meski belajar Qt Quick itu sangat mudah, anda harus familiar dengan prinsip pemrograman dan pengetahuan dasar Javascript. Karena bila kita bicara tentang Qt Quick, maka akan jauh lebih mudah bila kita mengerti dasar Javascript.

Ok, tanpa banyak basa – basi, mari kita mencoba membuat Hello World dengan Qt Quick Application, ingat, Qt Quick Application bukan Qt Widget Application.

Buka file -– Kemudian Pilih New Project --- Pilih Qt Quick Application --- berikan nama project --- klik OK

Catatan:
Dalam proses project baru ini, anda akan mendapati sebuah window untuk memilih Qt Quick Component Set.
Lihat gambar 6:


Pastikan VGA Driver anda terinstall OPENGLsehingga anda bisa menggunakan Qt Quick Component 2.0 . Tetapi bila VGA Driver anda masih onboard bawaan OS, mungkin tidak terdapat OPENGL di VGA anda, sehingga bila anda menggunakan Qt Quick Component versi 2.0 akan banyak error di sana sini, solusinya adalah menggunakan versi 1.1

Kembali ke project…

Setelah anda membuat project, nanti anda akan mendapati tampilan default seperti pada gambar di bawah ini,
Lihat gambar 7:


Anda bisa lihat, saya menggunakan Qt Quick Component 1.1 :P

Nah, kode – kode di atas adalah default kode Qt Quick Application. Silahkan run atau debug, nanti anda akan mendapati sebuah window dengan lebar 360px dan tinggi 360px. Mudah bukan??

Berikut adalah penjelasannya:

Rectangle, ini adalah sebuah ‘Rectangle’ , yup, kotak, ini adalah Window kita. Coba hapus semua kode default dan anda ganti dengan kode berikut ini,
Lihat gambar 8:


Silahkan run, dan lihat apa yang terjadi? Ya, anda akan memiliki sebuah window dengan latar belakang kuning, benar bukan??

Nah, mari kita tambahkan sebuah kotak lagi seperti pada gambar di bawah ini,
Lihat gambar 9:


Sekarang run, dan lihat seperti apa window kita??? Ya, kita sekarang punya window kuning dan merah,,, wow, mudah sekali ya membuat desktop application :)

x dan y di atas adalah jarak x dan y kotak merah terhadap batas window.

Silahkan lihat hasilnya pada screenshot berikut, hasil dari run project anda harusnya sama dengan gambar ini,
Lihat gambar 10:


Nah, setelah itu, yuk mari kita tambahkan tulisan “Hello World” di kotak merah,,,
Lihat gambar 11:


Run dan lihat hasilnya,, wow, mudah bukan????

Sekarang, yuk kita otak atik kodenya seperti gambar berikut ini,
Lihat gambar 12:



Anda bisa lihat, kita mulai otak – atik kodenya,

Untuk Rectangle, kita tambahkan id “kotakMerah”, sedangkan Text di dalamnya kita berikan id “kotakMerahText”.

Untuk Text, kita rata tengah-kan baik secara vertical maupun horizontal dengan properties “centerIn” terhadap kotak merah.

Kemudian kita berikan “MouseArea”, lihat dan amati kode di atas, saat MouseArea kita klik, maka kita tambahkan jarak x 20 pixel, dan saat itu pula kita ganti text dari “kotakMerahText”. Mudah dipahami kan?

Silahkan run, dan hasilnya nanti akan seperti berikut ini,
Lihat gambar 13:


Nah ternyata mudah bukan membuat .exe desktop application dengan menggunakan Qt Quick Application :)

Ini hanya pengenalan saja lho, kedepan, kita akan mencoba membuat Qt Quick application yang lain.

Demikian tutorial, mudah mudahan bermanfaat.

Salam.

Thursday, 27 February 2014

C++ QT No.2: Membuat hello world console application (+Variannya)


Software yang kita gunakan pada tutorial ini: QT 5.2.1, QT Creator 3.0.1

Sudahkah anda membaca tentang QT (dibaca cute)? QT adalah the amazing cross platform application framework yang support diantaranya:
Desktop: Windows, Mac OS X, Linux/X11, Solaris
Embedded: Embedded Linux (DirectFB, EGLFS, KMS, and Wayland), Windows Embedded (Compact and Standard), Embedded Android, Green Hills Software INTEGRITY, QNX, Wind River VxWorks
Mobile: Android, iOS, BlackBerry, Sailfish, WinRT*, Tizen*
*Work in progress, technology previews


Kita cukup mengetikan satu jenis kode, satu jenis framework QT, dan kita bisa me-run nya di beragam platform seperti di atas. Keren kan?

Nah, pada tutorial ke – dua ini kita akan mencoba membuat sebuah console application (Hello World). Kita pun juga akan membuat varian – varian dari Hello World kita ini, mulai dari kode sederhana hingga kode kompleks.



QT merupakan C++, sehingga bila kita ingin membuat console application di QT jangan khawatir, karena codenya sama baik dari class QT maupun standar C++. Bila anda sudah familiar dengan C++, pasti tidak sulit memahami QT.

Mari kita buka QT kita, buat project, dan mencoba memilih ‘console application’. Saat anda selesai membuat Project, maka otomatis QT Creator akan membuatkan sebuah template code untuk anda seperti di bawah ini:

Lihat gambar 1:




Nah, perhatikan screenshot code, kita akan mengenal directives dengan nama . Eh, bentar dulu, masihkah anda ingat apa itu directives??? :P
Bila lupa, silahkan baca – baca tutorial C++ standar di MediaTutorial, lihat kategory samping kanan dan buka saja kategory “C Plus Plus”.

Ada pertanyaan yang sering diajukan ke MediaTutorial, kenapa kategory nya adalah “C Plus Plus”? Kenapa tidak menggunakan “C++” saja?

Karena ‘blogspot’ tidak mendukung “+” pada LABEL nya, bug ini sudah lama dilaporkan ke Google tapi hingga tutorial ini dibuat (Selasa, 25 Feb 2014), tetap saja tidak ada perhatian :P

Nah, kembali ke , ini adalah salah satu Class dari QT yang digunakan dalam membuat console application. Ingin tahu lebih tentang class ini??? Anda bisa membuka QT help anda (setelah install QT pasti akan otomatis install help nya juga), dan anda pun bisa membaca setiap method yang ada di dalamnya.

Lihat gambar 2:


Nah, kembali ke kode template tadi, di sana kita membuat sebuah object a yang merupakan class dari QcoreApplication, kemudian kita memanggil method exec(). Sekali lihat kode nya pasti sudah bisa memahami kan??? Ini adalah OOP dari C++, hayo, yang belum tahu OOP silahkan baca – baca tutorial C++ standar di kategory “C Plus Plus” dari MediaTutorial.

Sebetulnya apa sih method exec() ini??

Sekali lagi kita akan membuka help pada QT Creator,

Lihat gambar 3:


Intinya, method exec() digunakan untuk event looping. Tahukah anda apa itu event??? Setiap komputer (saya menggunakan Windows 8.1 64) pasti selalu ada yang namanya event looping, proses ini digunakan untuk mendeteksi adanya event dari komputer, seperti click, scroll, dan lain lain. Bila proses menemukan adanya event , maka akan menjalankan method tersebut.

Kita akan membuat contoh penggunaan event looping ini pada tutorial berikutnya.

Nah, sekarang, saatnya kita akan membuat sebuah aplikasi Hello World. Kalo kita lihat, aplikasi kita ini sangatlah sedernya, tidak perlu memakai event, perlukah kita membuat object dari QcoreApplication dan memanggil method exec() nya? Yup, bisa anda gunakan, bisa tidak, karena ini baru Hello World saja. Tapi bila anda membuat aplikasi yang kompleks, anda harus selalu menggunakannya.

Mari kita mulai mengetikan HelloWorld nya, kita memiliki banyak sekali varian Hello World Console Application, saya yakin banyak pada pemula yang sedang mencari – cari contoh console ini:

VARIAN 1:
Membuat hello world dan C++ standar coding:


Lihat kode di atas, pada varian 1 ini kita hanya mengetikan Hello World standar C++, bahkan hampir kita tidak menggunakan class dari QT. Kita pun meng-comment out a.exec(), karena kita belum perlu menggunakan event, jadi tinggal di comment-out. Standard C++ yang kita gunakan adalah iostream dan namespace std. Silahkan run, dan lihat, jalan dengan sempurna kan???
Itulah varian Hello World pertama kita :) silahkan dicoba.

VARIAN 2:
Membuat Hello World dengan class QTextStream:


Nah, pada varian 2 ini kita mulai akan menggunakan QTextScream, apa itu class QTextStream?

Silahkan anda buka QT Help anda, QTextStream merupakan sebuah class yang digunakan untuk writing and reading text.
Pada kode di atas, kita membuat sebuah object out dari class QTextStream ini, kemudian kita memanggil constructornya dan memberikan argument stdout. Ingatkah dengan stdout, stdin, stderr?? Wah kalo lupa ayo ingat – ingat lagi C++ nya,,,,

Nah, setelah itu baru kita masukan hello world kita,, silahkan di coba,,,

VARIAN 3:
Membuat Hello World dengan standard Class C++:


Masih ingatkah tentang cara membuat Class pada C++? Bila lupa ayo buka buka lagi tutorial C++ di kategory samping kanan ini... :P

Pada varian 3 ini kita mencoba membuat class, yang didalamnya terdapa constructor, destructor, dan satu buah method sayHello() , coba lihat kodenya, sangat mudah dipahami bukan???

VARIAN 4:
Membuat Hello World dengan class QTextStream dan Class C++:


Nah, ini modelnya mirip dengan varian 3, tapi dikembangkan dengan memakai class dari QT yaitu
Coba lihat kodenya, mudah dibaca kan??

VARIAN 5:
Membuat Hello World dengan standar Class C++:


Nah, coba perhatikan kode ini dengan Varian 3, mirip bukan, tapi pasti ada yang beda, ayo coba cari,,, :P
Bila anda tidak bisa memahami kode di atas, anda harus melihat dulu tutorial C++ , , ,
Sama dengan varian 3, cuman pada varian 5 ini kita memberikan argument ke dalam method. Ayo cari,,,, :)

VARIAN 6:
Membuat Hello World dengan QT Class <qdebug>


Apa itu QDebug?
Ini QDebug lho ya, bukan qDebug, karena berbeda :)

QDebug merupakan class yang menyediakan output stream untuk debugging information.
QDebug ini digunakan ketika kita ingin menampilkan informasi debugging atau tracing ke tampilan console, file, atau device lain.

Kalo qDebug ini merupakan global declaration dari <qtglobal>, temennya qDebug diantaranya adalah qCritical, qWarning, qFatal dan lain – lain .
Dalam prosesnya QDebug yang merupakan object selalu memanggil qDebug untuk mendapatkan informasi debugging dan tracing information.

Kita akan membahas QDebug nanti pada tutorial yang lain.

Kalo kita pakai Qdebug, kita tidak perlu menggunakan ‘<<endl’ atan ‘\n’ , karena Qdebug akan menambahkan sendiri untuk kita.

VARIAN 7:
Membuat Hello World App dengan Class dan Header file.
process.h
process.cpp
main.cpp

process.h


process.cpp


main.cpp


Nah, kode – kode di atas adalah juga standard C++, hayo siapa yang belum bisa menulis class dan header??? Silahkan baca – baca tutorial C++ di MediaTutorial terlebih dahulu...

Kita membuat sebuah process.h yang berisikan declaration dari class dan method, kemudian kita membuat sebuah process.cpp yang merupakan definition dari class dan object di process.h.
Baru kemudian kita membuat main.cpp yang berisikan main() method kita.

Pasti sudah pada lupa dengan ‘declaration’ dan ‘definition’. Silahkan dibuka – buka kembali tutorial C++ nya,,, :)

Nah, ternyata banyak banget kan model penulisannya, satu hal yang terpenting adalah anda harus bisa C++, tidak perlu jago, cukup sekedar bisa saja, pasti lebih mudah nantinya bila akan terjun ke QT.

Demikian tutorial untuk complete beginner, bila anda punya varian Hello World yang lain silahkan posting komentar.

Salam,


Monday, 21 January 2013

C++ QT No.1: Mengenal QT Framework untuk Developer C++


Mengenal QT Framework (The Amazing Cross-Platform Framework).

[[---BEGIN UPDATE---]]

Update for QT 5.2
Note: Pada hari ini (Jum’at 21 Feb 2014), tutorial ini diupdate untuk informasi tentang QT 5.2.
Saat tutorial ini diupdate (diupdate lho ya bukan ditulis), saya menggunakan QT 5.2, QT Creator 3, dan Visual Studio 2013. Untuk pengguna yang lain sebetulnya sama saja.

Amazing, pada versi 5.2 ini QT is everywhere, untuk anda programmer anda bisa menggunakan QT untuk semua platform hanya dengan satu kode yang sama, hebat bukan??
Platform yang disupport diantaranya,
•Desktop: Windows, Mac OS X, Linux/X11, Solaris
•Embedded: Embedded Linux (DirectFB, EGLFS, KMS, and Wayland), Windows Embedded (Compact and Standard), Embedded Android, Green Hills Software INTEGRITY, QNX, Wind River VxWorks
•Mobile: Android, iOS, BlackBerry, Sailfish, WinRT*, Tizen*
*Work in progress, technology previews





Pada QT 5.2 terdapat banyak sekali perubahan, penambahan fasilitas, bug fixing dari 5.0 dan 5.1. Ada beberapa module yang ditambahkan diantaranya sebagai berikut:
NEW FEATURES:
Qt Android Extras
Qt Bluetooth
Qt Mac Extras
Qt NFC
Qt Positioning
Qt Windows Extras

SUPPORT NEW PLATFORM:
Android
Full support for camera and recording
Low-latency audio (QAudioInput, QAudioOutput)
Command-line deployment tool
JNI convenience API
OpenSSL support
Informasi lebih lanjut: http://qt-project.org/doc/qt-5/android-support.html

iOS
Media player support
Basic camera support (only viewfinder and image capture)
Low-latency audio (QAudioInput, QAudioOutput)
Informasi lebih lanjut: http://qt-project.org/doc/qt-5/ios-support.html

Qt Creator Updates
Qt Creator 3.0 is released along with Qt 5.2. In Qt Creator 3.0, the following were added:
Initial iOS support
API cleanup
Enhanced Android support
Initial debugging backend for the LLDB Debugger (Mac OS X)

Nah, untuk lebih jelasnya tentang semua ini, silahkan baca – baca di http://qt-project.org/doc/qt-5/qt5-intro.html

[[---END UPDATE---]]

QT Framework,QT (dibaca: cute) merupakan framework application cross platform cocok untuk para C++ programer. Apa sih QT itu?? Kenapa harus menggunakan QT?? Apa itu framework?? Apa kegunaannya untuk programer/developer software??

QT (bacanya: cute) adalah cross platform development program, yang artinya dapat membuat program untuk berbagai platform. QT tersedia untuk versi Windows, Linux dan Machintos.

QT ini merupakan salah satu framework yang dapat mempermudah kita dalam membuat suatu aplikasi dengan pemrograman C++. Pada tutorial-tutorial sebelumnya (kategori C++ native, bukan C++/CLI) kita telah menggunakan framework lain, yaitu wxWidgets. Bila anda menggunakan IDE untuk C++ native, seperti CodeBlocks, anda pun akan menemui pilihan framework yang begitu banyak saat akan membuat ‘new project’ disamping wxWidgets dan QT yang telah kita bahas.

Dengan menggunakan QT kita dapat membuat aplikasi untuk linux, windows, machintos, symbian, maemo/meego, windowsCE, embeded linux dengan sangat mudah.

Untuk framework sendiri merupakan sebuah frame yang akan membantu kita dalam menyelesaikan program aplikasi yang ingin kita buat. Anda pasti sudah kenal dengan PHP Framework Codeigniter kan? Nah, dengan Codeigniter, maka semua plugin, module, dan trik-trik penulisan cepat sudah ada dalam satu paket. Sehingga akan sangat membantu untuk developer. Bayangkan kalo kita tidak menggunakan framework sehingga harus mengetik sendiri kode-kode tersebut per-huruf, kapankah software kita akan siap jadi??

Mari kita kembali ke QT. Anda dapat membuka QT di http://qt-project.org. Anda dapat membaca dan melihat demo serta siapa saja yang menggunakan QT.

QT adalah cross-platform aplication dan UI Framework untuk developer yang menggunakan bahasa C++ atau QML. QML itu adalah bahasa C++ dari QT yang mirip seperti css dan javascript, anda bisa lihat di http://qt.digia.com/Product/qt-quick/.

Nah, kalo QT adalah Framework, lalu apa IDE nya?? Untuk IDE dari QT telah disediakan QT Creator, tetapi anda dapat menggunakan IDE lain seperti CodeBlocks dan VisualStudio. QT Creator merupakan bagian dari Nokia QT SDK (sejak tahun 2008 QT diakuisisi oleh Nokia, http://qt.nokia.com ). Untuk QT Creator kita akan membahas lebih lanjut nanti. QT adalah Framework dibawah lisensi LGPL opensource yang dapat kita gunakan untuk membuat sebuah aplikasi yang gratis maupun aplikasi komersial.

Bila anda membuka website QT, anda akan menemukan 3 hal utama yaitu QT, QT Quick dan QT Creator. Untuk QT dan QT Creator sudah jelas, lalu apa itu ‘QT Quick’?

Saya akan mengambil keterangan tentang QT Quick dari gudanglinux.wordpress.com seperti berikut ini:
“Qt Quick singkatan dari Qt User Interface Creation Kit adalah teknologi antarmuka tingkat atas (high-level user interface technology) yang diklaim secara dramatis memudahkan para pengembang untuk mendisain antarmuka (UI) yang cantik, ‘pixel perfect’ dan ringan disamping ‘touch-enabled’ menggunakan basis pemrograman Qt, tanpa perlu pengetahuan tentang pemrograman C++. Qt Quick diperkenalkan bersama rilis Qt 4.7 bulan Maret lalu dan selanjutnya menjadi bagian dari rilis Qt berikutnya.”

Sangat menarik bukan? Lalu apa kelebihannya?? Saya akan mengkutip kembali dari gudanglinux.wordpress.com berikut kelebihannya:

•Deklaratif yang mudah digunakan dengan bahasa mirip dengan skrip QML (Qt Meta-Object Language);

•Tools didalam Qt Creator IDE termasuk sebuah visual editor yang membantu para pengembang dan disainer menggabungkan elemen-elemen sederhana menjadi sebuah antarmuka animasi;

•Kelebihan lainnya adalah pendekatan pemrograman deklaratif yang membantu pembuatan antarmuka-antarmuka menjadi gampang, hanya dengan memerintahkan apa yang harus dibuat dan tidak harus menuliskan bagaimana cara membuatnya.

Ah, saya ingat tentang ‘The Maestro Team’ salah satu pengurusnya adalah agan Hery Sutrisno, group ini merupakan group dibawah naungan Komunitas Indonesia yang rencananya akan mengembangkan pembelajaran C++ dan QT. Maybe bila anda seorang programer dan developer yang tertarik dapat bergabung dengan ‘The Maestro’ group. Kenapa mereka memilih QT dan C++? Saya akan mengkutip quote dari ‘The Maestro’ doc di sini:
Q: Kenapa saya mengutamakan Qt nokia sebagai framework?
Qt nokia diciptakan dengan menggunakan bahasa pemogramman C++ dengan lisensi OpenSource sebagai defacto Graphical User Interface Library untuk C++. Dilinux seperti yang anda ketahui terdiri dari KDE dan GNOME. KDE diciptakan dengan menggunakan teknologi C++ dan Qt, sedangkan GNOME diciptakan dengan mengimplementasikan C++ dan GTK. Disini kita bisa melihat ada 2 framework besar yang digunakan secara standard dalam pembuatan OpenSource aplikasi diLinux yang aktiv pembangunanya. Apa yang Maestro ingin tekankan disini adalah Maestro tidak mempermasalahkan framework apa yang akan digunakan kedepanya tetapi Maestro menekankan pemahaman dasar framework tersebut dan Maestro memilih Qt sebagai dasar untuk penguasaan. Karena pada akhirnya ianya akan berlandaskan kepada programming language itu sendiri dan jenis dari software yang akan dibangun.

Kembali ke QT, versi QT saat penulis merelease tutorial ini adalah versi QT 5.0, pengen tau kelebihan dari versi terbaru yang release Desember 2012 kemarin ini?? Berikut merupakan ulasannya yang saya ambil dari QTDOCS tepatnya pada link 'What’s new in QT 5'.

QT 5.0 merupakan versi yang direlease akhir 2012, ini adalah versi terbaik dan perbaikan dari versi-versi sebelumnya. Versi ini lebih cepat dari versi sebelumnya sekaligus mendukung paradigm User Interface yang sedang ngetrend saat ini yaitu Touch Screen dan Tablets.

QT 5.0 akan sangat memanjakan penggunanya karena sangat mudah dan flexible dengan dukungan Javascript dan QML yang masih berpedoman pada C++. Untuk Javascript Backend sendiri didukung oleh V8 dan QT Webkit 2 yang akan sangat membantu sekali terutama untuk Web Developer HTML5.

Ada satu kelebihan lain dibandingkan dengan versi sebelumnya, portabilitas cross platform dalam QT 5 jauh lebih simple.

Tutorial pengenalan QT ini akan sangat panjang sekali bila diulas secara lengkap, nah, sebagai gantinya, anda dapat melihat 'what’s new in qt 5' yang akan membahas tentang:
-Amazing Graphics Capability and Performance
-Qt Quick in Qt 5
-WebKit and HTML5
-Multimedia
-Modularized Qt Libraries
-Widgets in Qt 5
-Qt Platform Abstraction
-New Connection Syntax
-Connectivity and Networking
-JSON Support
-User Input

Benar-benar menakjubkan bukan??

Nah, pada tutorial berikutnya kita akan membahas installasi QT, pada IDE (di sini saya menggunakan CodeBlocks , VisualStudio dan QT Creator)