Pemrograman Qt 20 QSystemTrayIcon untuk Membuat Aplikasi System Tray

dokumen-dokumen yang mirip
Pemrograman Qt 19 Membaca dan Menuliskan Standard Output ke QTextEdit Secara Realtime

Pemrograman Qt 13 Logo Program dengan setwindowicon

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

Pemrograman Qt 14 QPropertyAnimation untuk Animasi GUI

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

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

Pemrograman Qt 18 QTextStream untuk Membuat Aplikasi Proxy Changer

Wujud Program yang Diinginkan

Belajar Menggunakan KDE Edisi 3 Mengenal Menu dan Taskbar

Pemrograman Qt 9 QProcess dan Menjalankan Perintah Linux

TIPS LATIHAN MEMROGRAM

Belajar Menggunakan KDE Edisi 1 Perkenalan Singkat KDE

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

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

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

Wujud Program yang Diinginkan

Pemrograman Qt 4 QStackedLayout dan QComboBox untuk Window Layering

Qt Creator. INF-103 Pemrograman II Program Studi Informatika. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

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

USER MANUAL SUB PORTAL PUBLIK BUMN

TUTORIAL DASAR C++ BELAJAR C++ DARI NOL. Nor Kandir. Lab B201 - Teknik Elektro ITS Surabaya

MODUL 1 INSTALASI PAKET JAVA DAN PROGRAM SEDERHANA

PETUNJUK SINGKAT INSTALASI DAN PENGGUNAAN IGN 2009

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

Belajar mikrokontroler Arduino untuk tingkat Pemula.

Memulai Access 2007 dan Membuat Database 1.1 Memulai Microsoft Office Access 2007

PENDAHULUAN. Gambar 1.1. GameMaker dari YoyoGames

1.1 Mengenal dan Memulai Excel 2007

Tutorial Instalasi Wordpress dengan XAMPP di Ubuntu Maverick

Aplikasi Surat Keluar Masuk Versi 1.0

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

Membuat Menu Login Sederhana [Full Coding]

Belajar Menggunakan KDE Edisi 5 Menggunakan Lingkungan Desktop

Menggunakan Ubuntu. Pusat Pelayanan Teknologi Informasi dan Komunikasi Universitas Gadjah Mada. menggunakan Ubuntu 1

Visual Basic 6.0 For Beginners

TUGAS 1 APLIKASI WEB DINAMIS LANJUT MENGENAL COMPOSER DAN GITHUB DISUSUN OLEH: AHMAD DAHLAN AL-ASY ARI( )

BAB 2 LANDASAN TEORI. pengumpulan data Tugas Akhir di SMA N 5 Medan. disebut dengan informasi. (Bambang Wahyudi,2003)

DOKUMENTASI UNTUK PENGGUNA PANDUAN PENGGUNAAN SISTEM LAYANAN ROHANIWAN KEMENTERIAN AGAMA PROVINSI JAWA TENGAH (UNTUK INSTANSI/SKPD)

Petunjuk Pengoperasian SPSE 3.5 Auditor

Shutter Aplikasi Pengambil Skrinsot (Tangkapan layar) di Linux

Petunjuk Singkat Penggunaan Kuantum Gama bagi Pengajar. Yudi Wibisono Yohanes Suyanto versi dokumen: 30 Maret 2008

GUI & Event Handling. Viska Mutiawani, M.Sc

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

KONFIGURASI 3D STUDIO MAX 2010 & SLATE MATERIAL

Form Label Text Box Command Button

1.1 Mengenal Visual FoxPro

PANDUAN MENGGUNAKAN SISTEM INFORMASI KEARSIPAN STATIS (SiKS) ARSIP UNIVERSITAS GADJAH MADA

APLIKASI WEB DINAMIS LANJUT TUGAS 1

Dwiny Meidelfi, M.Cs

Panduan Lengkap Menggunakan Excel 2016

TUGAS 1 WEB DINAMIS LANJUT

MODUL PEMBELAJARAN APLIKASI KOMPUTER BERBASIS MICROSOFT POWERPOINT DAN INTERNET

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

MEMBUAT MEDIA PRESENTASI BAHAN AJAR MENGGUNAKAN POWERPOINT 2007

PETUNJUK PENGGUNAAN BARANG/JASA PEMERINTAH PEJABAT PENGADAAN

PETUNJUK PENGGUNAAN APLIKASI e- PURCHASING PRODUK BARANG/JASA PEMERINTAH PPK

PETUNJUK PENGGUNAAN APLIKASI e- PURCHASING PRODUK BARANG/JASA PEMERINTAH PEJABAT PENGADAAN

MODUL PRAKTIKUM KE 1

Buku Panduan Penggunaan Aplikasi SKI

Tutorial L A TEX di Linux (Disertai Contoh)

Pemrograman Dekstop Pulut Suryati

Menggunakan Browser dan Mesin Pencari

Tutorial Penggunaan. Bagian I.

Kesan Pertama Memakai KDE

Otodidak Behind The Scene

1. MENGENAL VISUAL BASIC

I). Login SPPA. Penjelasan Poin : Poin 1 adalah Brand logo, Nama Instansi & Judul aplikasi. Poin 2 adalah kotak Input NIP

MODUL WINDOWS XP. Minggu I

Memulai IGOS Nusantara

PANDUAN PENGGUNAAN ICECREAM PDF - SPLIT & MERGE PDF

Gambar Halaman Awal KTI Online

Penyandingan Bluetooth. Panduan Pengguna

Inheritance dan Polimorfisme

Petunjuk Pengoperasian SPSE Auditor

BAB 3 PERANCANGAN SISTEM

(User Manual) Sistem Informasi Manajemen Kependudukan dan Aset Desa Desaku. Buku Petunjuk Penggunaan Aplikasi

visit :

PETUNJUK PENGGUNAAN BERMOTOR PANITIA

PETUNJUK PENGGUNAAN BARANG/JASA PEMERINTAH. PPK "Buat Paket"

MEMBUAT APLIKASI MENGGUNAKAN MICROSOFT ACCESS

PENGENALAN DAN INSTALASI SOFTWARE

BAB 3 Mengenali Lingkup Pemrograman Anda

PENGENALAN FLASH DAN ACTIONSCRIPT 3.0

PETUNJUK PENGGUNAAN APLIKASI e-purchasing ALAT MESIN PERTANIAN (ALSINTAN) PANITIA

BAB 8 Argumen dari Command-line

Pemrograman Lanjut. Intro to GUI (Graphical User Interface)

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

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

Pemrograman dengan Java

Daftar Isi. 2 P a g e

8/29/2012. Mengoperasikan Sistem Operasi Berbasis GUI. Sistem Operasi Windows dan Perintah pada menu. Ikon ikon pada desktop windows.

Dasar Pemrograman Java

Cara Membaca File Text di JAVA

BAB III ANALISA DAN PERANCANGAN

MENGOPERASIKAN SOFTWARE SPREADSHEET

Malang, Januari 2007 Penulis

PETUNJUK PENGGUNAAN APLIKASI e- PURCHASING PRODUK BARANG/JASA PEMERINTAH ULP/PEJABAT PENGADAAN

Manual Penggunaan dan Instalasi Software

Bab 5. Dasar-dasar Action Script

Universitas Ahmad Dahlan ---- Lingkungan Pemrograman Visual. Teknik Informatika

Transkripsi:

Pemrograman Qt 20 QSystemTrayIcon untuk Membuat Aplikasi System Tray Bismillahirrahmanirrahim. Apa Anda ingin membuat aplikasi system tray? Aplikasi semacam ini punya fasilitas ikon di pojok kiri bawah panel menu desktop ala KDE atau di kiri atas pada panel menu ala GNOME. Contoh aplikasi yang memakai fitur ini misalnya antivirus, audio player, sound applet, download manager, dan lain-lain. Ciri khas aplikasi dengan fitur ini adalah jika ditutup jendelanya maka dia tidak hilang tetapi bertengger di lokasi system tray. Kita akan membuatnya dengan berdasarkan pada contoh kode dari dokumentasi resmi Qt Framework sendiri yang sudah ada di dalam Qt Creator. Saya berusaha memodifikasi program contoh Qt yang bernama systray sehingga tersisa hanya fungsi-fungsi paling minimal untuk sebuah program system tray. Saya lakukan ini karena ingin tahu bagaimana kode paling minimal untuk program system tray itu dan alhamdulillah berhasil. Semoga tulisan ini bermanfaat. 1. Spesifikasi Sistem Ubuntu 12.04 Qt Creator 2.4.1 Qt 4.8 2. Daftar Kelas 1. QSystemTrayIcon 2. QMenu 3. 4. QIcon 5. QmessageBox 3. Daftar Method 1. addaction() -> milik QMenu 2. addseparator() -> milik QMenu 3. setcontextmenu() -> milik QMenu 4. show() -> milik QSystemTrayIcon 5. isvisible() -> milik QSystemTrayIcon 6. ignore() -> milik QCloseEvent 7. information() -> milik QMessageBox 8. createactions() -> buatan sendiri

9. createtrayicon() -> buatan sendiri 10. iconactivated() -> buatan sendiri 11. closeevent() -> buatan sendiri 4. Arah Tulisan Ini uget Quassel Program yang akan dibuat adalah program dengan kemampuan bertengger di system tray semisal download manager (uget) dan IRC client (Quassel).

5. Kode mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui> namespace Ui class MainWindow; class MainWindow : public QMainWindow Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); QVBoxLayout *layoututama; QPushButton *tombolutama; QWidget *widgetutama; *minimize; *maximize; *restore; *quit; QSystemTrayIcon *trayicon; QMenu *trayiconmenu; QIcon private: Ui::MainWindow *ikon; *ui; private slots: void createactions(); void createtrayicon(); // void iconactivated(qsystemtrayicon::activationreason reason); //ini berhubungan dengan fungsi iconactivated() di mainwindow.cpp protected: void closeevent(qcloseevent *event); ; #endif // MAINWINDOW_H

mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) //deklarasi objek-objek GUI QVBoxLayout *layoututama = new QVBoxLayout; QPushButton *tombolutama = new QPushButton("TOMBOL"); QWidget *widgetutama = new QWidget; //pemanggilan fungsi penting yang akan selalu berjalan createactions(); createtrayicon(); //pemasangan layout kepada widget layoututama->addwidget(tombolutama); widgetutama->setlayout(layoututama); this->setcentralwidget(widgetutama); //SIGNAL AND SLOT // connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), // this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); //ini dijadikan komentar karena bukan komponen paling minimal untuk program system tray //mengurus ikon untuk system tray trayicon->seticon(qicon(":/gambar/metamorfosa")); trayicon->show(); //tanpa baris ini, system tray tidak akan muncul sama sekali //bahkan setelah jendela closed pun tidak //set logo untuk jendela supaya sama dengan ikon system tray this->setwindowicon(qicon(":/gambar/metamorfosa")); MainWindow::~MainWindow() delete ui; /* DAFTAR ISI 1. iconactivated 2. createactions 3. createtrayicon 4. closeevent */

//1. iconactivated //fungsi ini mengatur perilaku klik kanan, klik kiri, dan klik tengah pada ikon system tray /*//fungsi ini bukan termasuk fungsi paling minimal untuk program system tray sehingga tidak dipakai //void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) // // switch(reason) // // case QSystemTrayIcon::Trigger: // case QSystemTrayIcon::DoubleClick: // case QSystemTrayIcon::MiddleClick: // default: // ; // //*/ //2. createactions //fungsi ini membuat objeck-objek Actions untuk menu klik kanan lalu menghubungkannya dengan fungsi jendela void MainWindow::createActions() minimize = new (tr("minimize"), this); connect(minimize, SIGNAL(triggered()), this, SLOT(hide())); maximize = new (tr("maximize"), this); connect(maximize, SIGNAL(triggered()), this, SLOT(showMaximized())); restore = new (tr("restore"), this); connect(restore, SIGNAL(triggered()), this, SLOT(showNormal())); quit = new (tr("keluar"), this); connect(quit, SIGNAL(triggered()), qapp, SLOT(quit())); //3. createtrayicon //fungsi ini memasukkan action yang sudah dibuat dengan createactions ke dalam menu tray icon //sejatinya, fungsi ini membuat objek QMenu lalu mengisinya dengan objek-objek s, //lalu mengeset context menu dari QSystemTrayIcon dengan objek QMenu tadi void MainWindow::createTrayIcon() trayiconmenu = new QMenu(this); trayiconmenu->addaction(minimize); trayiconmenu->addaction(maximize); trayiconmenu->addaction(restore); trayiconmenu->addseparator(); trayiconmenu->addaction(quit); trayicon = new QSystemTrayIcon(this); trayicon->setcontextmenu(trayiconmenu); //menu pada klik kanan //tanpa baris ini,

//pada ikon di system tray tidak akan muncul //ditemukan pada Wednesday, June 04, 2014 10:14 PM //4.closeEvent //fungsi ini menayangkan dialog pesan ketika jendela ditutup lalu program bertengger di system tray //fungsi ini protected void MainWindow::closeEvent(QCloseEvent *event) if(trayicon->isvisible()) QMessageBox::information(this, tr("pesan"), tr("aku akan bertengger di pojokan <i>system tray</i>-mu")); hide(); event->ignore();

6. Qt Creator dan Kode

7. Hasil Tampilan yang dihasilkan sederhana saja. Tombol satu itu pun tidak diberi fungsi. Jika jendela ditutup, maka sebuah dialog QMessageBox akan muncul sebagai peringatan. Setelah itu, ia menjadi ikon (saya memberikan ikon Archlinux kepadanya) pada bagian system tray di menubar. Ikon system tray ini bisa digunakan sebagaimana aplikasi system tray yang lain.

8. Analisis mainwindow.h public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); QVBoxLayout *layoututama; QPushButton *tombolutama; QWidget *widgetutama; *minimize; *maximize; *restore; *quit; QSystemTrayIcon *trayicon; QMenu *trayiconmenu; QIcon *ikon; Hal penting di dalam program kita kali ini adalah penggunaan kelas QSystemTrayIcon,, dan QMenu. Sepanjang tutorial pemrograman Qt di blog ini, 3 kelas ini belum pernah dipakai. Jika Anda belum memahami cara deklarasi di dalam header ini, silakan merujuk ke penjelasan deklarasi header. mainwindow.cpp Pada mainwindow.cpp, ada 3 fungsi buatan yang penting. Sebelum itu, ada beberapa bagian penting di dalam kelas MainWindow. Dua fungsi ini (createactions() dan createtrayicon()) dipanggil supaya hidup terus menerus. Dan jika Anda belum memahami cara membuat GUI pada berkas CPP ini, silakan merujuk ke penjelasan cara membuat GUI dasar. //pemanggilan fungsi penting yang akan selalu berjalan createactions(); createtrayicon(); Dua fungsi buatan yang paling penting ini dipanggil dahulu sebelum pemasangan layout. 8.1. createactions() //1. createactions //fungsi ini membuat objeck-objek Actions untuk menu klik kanan lalu menghubungkannya dengan fungsi jendela void MainWindow::createActions() minimize = new (tr("minimize"), this); connect(minimize, SIGNAL(triggered()), this, SLOT(hide()));

maximize = new (tr("maximize"), this); connect(maximize, SIGNAL(triggered()), this, SLOT(showMaximized())); restore = new (tr("restore"), this); connect(restore, SIGNAL(triggered()), this, SLOT(showNormal())); quit = new (tr("keluar"), this); connect(quit, SIGNAL(triggered()), qapp, SLOT(quit())); Sebelum mendeklarasikan objek-objek ini di dalam fungsi ini, kita perlu mendeklarasikan dulu mereka di mainwindow.h. Argumen fungsi tr() adalah pengganti string biasa untuk keperluan penerjemahan pada masa mendatang. Tanpa tr(), kita tidak bisa membuat berkas.po atau semacamnya untuk penerjemahan antarmuka aplikasi sebagaimana biasa kita temukan di Transifex maupun Launchpad. Pada fungsi createactions() di atas, kita melakukan connect() antara SIGNAL triggered() dengan SLOT fungsi hide(), showmaximized(), shownormal(), dan quit() dari jendela utama. Maksudnya jelas, agar setiap objek memiliki tugasnya masing-masing. Khusus untuk quit(), objek kedua di dalam connect() bukan this melainkan qapp. Menurut QApplication Class Reference[1], qapp di sini adalah pointer global yang menunjuk kepada instansi QApplication. SLOT di sini memakai fungsi-fungsi dari QWidget berdasarkan dokumentasi QWidget Class Reference[2]. 8.2. createtrayicon() //2. createtrayicon //fungsi ini memasukkan action yang sudah dibuat dengan createactions ke dalam menu tray icon //sejatinya, fungsi ini membuat objek QMenu lalu mengisinya dengan objek-objek s, //lalu mengeset context menu dari QSystemTrayIcon dengan objek QMenu tadi void MainWindow::createTrayIcon() trayiconmenu = new QMenu(this); trayiconmenu->addaction(minimize); trayiconmenu->addaction(maximize); trayiconmenu->addaction(restore); trayiconmenu->addseparator(); trayiconmenu->addaction(quit); trayicon = new QSystemTrayIcon(this); trayicon->setcontextmenu(trayiconmenu); //tanpa baris ini, //menu pada klik kanan //pada ikon di system tray tidak akan muncul //ditemukan pada Wednesday, June 04, 2014 10:14 PM Fungsi createtrayicon() adalah tindak lanjut dari createactions() sebelumnya. Jika fungsi sebelumnya bertugas membuat aksi, maka fungsi ini bertugas memasang aksi itu pada menu klik kanan lalu membuat ikon system tray. Fungsi inilah sebetulnya yang menayangkan

ikon aplikasi kita pada system tray dengan deklarasi objek trayicon. Inti fungsi ini adalah deklarasi setcontextmenu() dengan argumen objek QMenu. Objek QMenu bernama trayiconmenu, sudah diisi dengan objek-objek pada baris-baris di atasnya. Fungsi addseparator() di atas berguna untuk menayangkan garis horizontal yang memisahkan 3 perintah dengan perintah Quit pada menu klik kanan nantinya. 8.3. closeevent() //3.closeEvent //fungsi ini menayangkan dialog pesan ketika jendela ditutup lalu program bertengger di system tray //fungsi ini protected void MainWindow::closeEvent(QCloseEvent *event) if(trayicon->isvisible()) QMessageBox::information(this, tr("pesan"), tr("aku akan bertengger di pojokan <i>system tray</i>-mu")); hide(); event->ignore(); Bagaimanakah aplikasi ini bisa tetap bertengger di system tray sementara jendela utama ditutup? Bagaimana dia bisa menayangkan jendela dialog berisi pesan? Fungsi closeevent() ini jawabannya. 8.4. Satukan Semuanya Setelah ketiga fungsi paling mendasar itu, saya jelaskan beberapa baris kode terpenting dalam MainWindow(). //mengurus ikon untuk system tray trayicon->seticon(qicon(":/gambar/metamorfosa")); trayicon->show(); //tanpa baris ini, system tray tidak akan muncul sama sekali //bahkan setelah jendela closed pun tidak //set logo untuk jendela supaya sama dengan ikon system tray this->setwindowicon(qicon(":/gambar/metamorfosa")); Baris seticon() di atas bertugas untuk memberikan ikon PNG Archlinux sebagai wujud program ini di system tray. Kemudian baris show() di atas berguna untuk menayangkan ikon dari program di dalam system tray. Kemudian baris setwindowicon() di atas berguna untuk memberi logo Archlinux kepada jendela, supaya sama dengan ikon system tray-nya. Logo Archlinux ini sudah saya sertakan di tarball kode sumber di bawah.

9. Kesimpulan Pembuatan program system tray paling minimal dengan Qt dilakukan dengan membuat objek-objek, kemudian membuat objek QSystemTrayIcon dan QMenu, kemudian menyiapkan close event. 10. Unduh Kode Sumber Program kali ini bernama CalonSystemTray. Silakan unduh dan buka di Qt Creator Anda. Alamat: http://otodidak.freeserver.me/tarball/calonsystemtray.tar.gz Ukuran: 50 KB 11. Referensi 1. http://qt-project.org/doc/qt-4.8/qapplication.html 2. http://qt-project.org/doc/qt-4.8/qwidget.html 12. Tentang Dokumen Ini Dokumen ini adalah versi PDF dari posting asli http://malsasa.wordpress.com/2014/06/13/pemrograman-qt-20-qsystemtrayicon-untukmembuat-aplikasi-system-tray/. Dokumen ini ditulis dengan fonta Ubuntu 12pt. Dokumen ini disusun ulang dengan Libreoffice Writer 3.5. Dokumen ini selesai disusun pada 6 Juli 2014. Penulis mohon maaf jika terdapat kesalahan dalam dokumen ini. 13. Tentang Penulis Penulis adalah warga Forum Ubuntu 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 0878 5273 8641. 1 http://malsasa.wordpress.com/pdf