Alternatif menampilkan gambar di Qt5(tidak blur)

Akhir-akhir ini rupanya penggunaan QLabel dan QPixmap tidak bagus di Qt, gambar yg ditampilkan jadi blur. Sudah ada laporan bug sejak 5.3, kalau tidak salah baca. Dan sampai saat ini, tanggal 06 bulan mei 2017(Qt 5.8) bug ini rupanya belum fix.

sebagai alternatif, saya menggunakan QWidget dengan trik pengaturan CSS. caranya dengan meletakkan QWidget pada form, lalu setting stylesheet-nya. 🙂

border-image: url(:/logo.png) 0 0 0 0 stretch stretch;

Advertisements

Post from Qt5

#include <QCoreApplication>
#include <QDebug>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QUrlQuery>
void sendRequest();
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    sendRequest();
    return 0;// a.exec();
}
void sendRequest(){
   QByteArray data;
    QUrlQuery params;
    params.addQueryItem("param1", "value1");
    params.addQueryItem("param2", "value2");
    params.addQueryItem("param3", "value3");
    data.append(params.toString());
    qDebug()<<data;
    QEventLoop eventLoop;
    QNetworkAccessManager manager;
    QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
    QNetworkRequest request(QUrl("http://mars.dev/test"));
    request.setHeader(QNetworkRequest::ContentTypeHeader,QStringLiteral("application/x-www-form-urlencoded"));
    QNetworkReply *reply = manager.post(request,data);
    qDebug()<<"tunggu";
    eventLoop.exec(); // tunggu hingga request finish
    if (reply->error() == QNetworkReply::NoError) {
        //success
        qDebug() << "Success" <<reply->readAll();
        delete reply;
    }
    else {
        //failure
        qDebug() << "Failure" <<reply->errorString();
        delete reply;
    }
    qDebug()<<"selesai";
}

 

Linux, Open Port Serial Without root permission.

terkadang kita membuat aplikasi di linux yang memiliki modul yang membutuhkan hak akses membuka port serial. namun, karena secara default, user biasa di linux tidak memiliki hak akses untuk membuka port  serial port, maka kita diharuskan untuk menambahkan sudo atau gksudo pada shotcut aplikasi kita. cara ini sangat berguna. saya juga lama menggunakan cara ini. kelemahan cara ini adalah, kita akan selalu diminta memasukkan password setiap membuka aplikasi kita. sungguh sesuatu yang sangat tidak nyaman. apalagi aplikasinya akan di deliver ke customer kita.

ternyata ada cara lain yang menurut saya lebih baik. yaitu dengan mendaftarkan user linux-nya ke group dialout. commandnya sebagai berikut:

sudo usermod -a -G dialout usernamelinuxnya

lanjutkan dengan ritual seperti biasa, yaitu logout dan login. lalu, coba buka aplikasi buatan kita, insyaAllah akan bisa membuka port serial tanpa harus menggunakan akses root. 🙂

QT5, Mengatasi “QMYSQL driver not loaded”

  1. cd /opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers
  2. ldd libqsqlmysql.so
  3. jika ktemu “libmysqlclient_r.so.16 => not found“, pindah ”
    cd /usr/lib/x86_64-linux-gnu"
  4. cp libmysqlclient_r.so.18 libmysqlclient_r.so.16
  5. ulangi langkah 1 hingga 2, jika ketemu “libssl.so.10 => not found”, lanjutkan ke langkah 3. lalu, “sudo ln -s libssl.so.1.0.0 libssl.so.10”.
  6. ulangi langkah 1-2, jika ketemu “libcrypto.so.10 => not found”, lanjutkan ke langkah 3, lalu, “sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10”.

sekian terima kasih. semoga membantu. 🙂

Catatan sebelum Uninstall Lubuntu

reinstall OS terkadang membuat kita sedikit khawatir. apalagi jika OS yang telah digunakan telah terinstall berbagai keperluan sehari-hari. makanya, sebelum uninstall mesti dicatet dulu, apa saja yang nantinya harus tersedia di OS baru. 🙂

untuk catatan saya pribadi, beberapa yang mesti/wajib ada adalah (kira-kira) sebagai berikut:                (catatan pribadi saja, hehe…)

  1. install GCC
  2. install AVR-GCC
  3. install Kicad
  4. install codeblock
  5. install Qt5
  6. install Apache, PHP, MySQL
  7. install composer sekaligus laravel
  8. install sublime +snippet-snippetnya
  9. install git
  10. install chrome
  11. install VLC

sepertinya, hanya itu saja. belum ada tambahan apa2 lagi. semoga selamat sampai tujuan. 😀

 

 

Catatan OpenCV(1): cv::Mat

kali ini lagi mau nyatet tentang cv::Mat.

cv::Mat adalah sebuah class yg bisa kita bayangkan sebagai sebuah matrix.

cara bikinnya sih gampang.

cv::Mat A;

isi matrix A dengan gambar.

A=cv::imread(“C:\nai.jpg”);

cara lainnya:

cv::Mat A(400.600, CV_8UC3, Scalar(0,0,255));

ini akan membuat matrix 2 dimensi dengan ukuran 400×600, dengan pertitik berisi 8 bit (uchar) sebanyak 3 biji. nilai defaultnya adalah(0,0,255).

int sz[3] = {2,2,2};

Mat A(3,sz, CV_8UC(1), Scalar::all(0));

contoh di atas juga membuat matrik A. contoh tersebut membuat matrik A dengan lebih dari 2 dimensi. (gak ngerti yang ini, hii)

Mat A;

A.create(4,4, CV_8UC(2));//menggunakan fungsi create

Mat RowClone = C.row(1).clone();//mengcloning bari kedua.

perlu diingat:

cv::Mat B = A;

cv::Mat C(A);

kedua object tersebut sebenernya masih object yang sama dengan A. jika kita mengubah salah satu dari object ketiganya(A,B atau C) maka ketiga-tiganya akan berubah. itu karena sebenernya merujuk ke memori yang sama. 🙂

bisa juga kita membuat sebuah objek yang sebenernya juga mengarah ke A tapi dengan ukuran yang berbeda. anggap matrik yang telah kita buat di atas dimensinya 400×600. kita akan membuat objek Mat yg sebenernya masih merujuk ke memori matrik A tapi ukurannya lebih kecil.

cv::Mat D(A, cv::Rect(10,10,100,200));

nah object D tersebut sebenernya adalah sebuah object yang mengarah ke memori matrix A dengan posisi 10,10 dengan ukuran 100×200. jadi jika kita mengubah semua isi matrik D dengan 255. maka otomatis pada matrix A akan ada kotak seukuran 100×200 berwarna putih di posisi (10,10).

kalau mau bikin objek kopian mesti pakai fungsi clode() atau copyTo(),

cv::Mat J;

j=A.clone();

cv::Mat K;

A.copyTo(K);

Object dari cv::Mat dapat langsung di print ke cout.

count<<“Matrik A adalah”<<A<<endl;

menginstall openCV untuk Qt di Windows 7 dengan Mingw dan CMake

Assalamu ‘Alaikum.

kali ini saya ingin berbagi cara menginstall OpenCV untuk Qt. Kali ini saya menginstall di Windows 7 menggunakan Mingw dan CMake.

kebutuhan minimum:

1. telah terinstall Qt dengan paket Mingw.

2. telah terinstall CMake.

3. telah mendaftarkan path

C:\Qt\Qt5.3.2\5.3\mingw482_32\bin

C:\Qt\Qt5.3.2\Tools\mingw482_32\bin

C:\Qt\Qt5.3.2\Tools\QtCreator\bin

C:\Program Files\CMake\bin

“silahkan sesuaikan sendiri dengan yg ada di PC anda”.

4. Extract OpenCV. akan terdapat folder build dan source.

5. buat folder baru pada folder opencv dengan nama release.

6. buka CMake, lalu jelajahi folder source(for source) dan realese(for build).

7. klik configure. tunggu hingga proses selesai. lakukan configure kembali apabila pada list parameter masih ada yg berwarna merah. jika semua list parameter telah putih semua, maka setting  beberapa point berikut:

WITH_QT= centang [true]

CMAKE_BUILD_TYPE=Release

“jika kesulitan mencarinya, gunakan kotak pencarian”

8. klik configure hingga tidak ada parameter yg masih merah.

9. lalu klik generate. pilih compiler gcc dan g++. keduanya ada di C:\Qt\Qt5.3.2\Tools\mingw482_32\bin.

10. penggunaan CMake selesai. lalu tutup.

11. buka cmd. pindah ke folder release.

12. jalankan perintah: mingw32-make. akan memakan waktu yg cukup lama. tunggu hingga proses selesai.

13. jalankan perintah: mingw32-make install. tunggu hingga proses selesai.

14. tambahkan folder opencv/release/bin ke path system.

15. Done!

 

note:

untuk penggunaan di Qt, perlu ditambahkan baris berikut pada file .pro kita.

INCLUDEPATH += C:\opencv\release\install\include