16.02.2009 - 14:13
EkleBunu Sosyal Paylaşım Butonu2 Yorum | 286 Okuma

Konu : Basit bir gösterge yapmak.

qt ibre gösterge grafik

 


Soru : Basit bir ibre çizip projeye dahil ettim, fakat bir türlü döndürme işlemini yapamıyorum. Daha önce belirttiğiniz QPainter sınıfını da kullandım ama sonuç alamadım. Yardım ederseniz sevinirim.
Gönderen :  R. D.

Cevap: Arkadaşımızın isteği üzerine küçük bir örnek hazırladım. İşin mantığını kavramak ve benzer örnekler yapmak isteyenler için faydalı olacağını düşünüyorum.

ibre.cpp

#include <QtGui>
#include "ibre.h"

ibre::ibre(QWidget *parent)
    :QWidget(parent){

    donusAcisi = 0;
    setBackgroundRole(QPalette::Base);

}

ibre::~ibre(){

}

void ibre::dondur(int derece){

      donusAcisi = derece;
      update();

}

void ibre::paintEvent(QPaintEvent *){

    QPainter painter(this);
       
    //SmoothPixmapTransform : donus sirasinda resim kalitesinin bozulmamasi icin
    painter.setRenderHint( QPainter::SmoothPixmapTransform );

    QImage imgIbre("ibre90saatYonu.png");

    /* x = (width() / 2) ve y = (height() / 2) noktalarinda, yani sayfanin tam ortasında
     * yeni bir koordiant sistemi olustur.
     * Boylece x=0, y=0 noktalarina cizilen her cizim sayfanin tam ortasinda olur.
     */

    painter.translate( width() / 2, height() / 2);

    //Aciklama asagidaki "save(); & restore();" kisminda

    painter.save();
       
    /*
     * dondurme islemi resmin ortasindan degilde kucuk dairenin ortasindan yapilmali.
     * X noktasi icin; resmi, genisligi kadar beri getirip, arti olarak dairenin yari capini ekliyorum.
     * Ornegin: genişlik = 100px, yaricap = r = 10px olsun, döndürme yapilacak koordinat (0,0) dır.
     * X = -100 + r böylece X noktasi kucuk dairesinin tam ortasina konumlanmis olur,
     * Y noktasi icin; yaricap kadar da yukari (eksi) kısma cıkarak Y noktasi
     * kucuk dairenin ortasina konumlanmis olur.
     *
     * Not: kucuk dairenin yaricapini, resmin yüksekliğinin yarisini alarak elde ettim. Tam olcum icin
     * dairenin altindaki ya da ustundeki bosluklarin olmamasi veya esit olmasi gerek.
     *
     */


    //girilen aci degerinde dondurme islemini yap.

    painter.rotate( donusAcisi + 2.5 ); // +2.5'luk bir deger daha ekleyerek ibre ucu ile sayilari ortaliyorum.

    //ve ibreyi ciz
    painter.drawImage( -(imgIbre.width()) + (imgIbre.height() /2 ), -(imgIbre.height() /2 ), imgIbre);
 
    /*
     * save(); & restore(); Bu iki fonksiyonun arasinda yapilan cizimleri bir katman gibi dusunebilirsiniz.
     * Eger ibreyi dondurme kodlarini bu iki fonksiyon arasina yazmasaydim,
* sayilarlarda ibre ile birlikte donerdi.
     * İste bu yuzden, bu iki fonksiyon arasini bir katman, diger kisimlari farkli bir katman yaptim.
     */


    painter.restore();

    //Sayilari ciz
    sayilariCiz(painter, imgIbre.width());

    //koordinat sistemini eski haline getir. (Geri al. x=0, y=0 en ust olur.)
    painter.translate( -(width() /2), -(height() / 2) );

}

void ibre::sayilariCiz(QPainter &p, int ibreGenisligi){
         
    for (int n=0; n<=180; n+=10){

        p.drawText( (-ibreGenisligi - 20), 0, QString::number(n));
        p.drawText( (-ibreGenisligi + 5), 0, "-");       
        p.rotate(10);   

    }
}

Kaynak Kod : ibre.zip

Devamını Oku... | Etiketler : cpp - qt
06.01.2009 - 13:17
EkleBunu Sosyal Paylaşım Butonu1 Yorum | 392 Okuma

Okulların çıkış saatinde bomba yağdıran, namaz esnasında cami vuran, yolda giden ambulansa roket fırlatan, her türlü insani yardımı engelleyip o insanları bir açık hava hapishanesinde tutan cesur ülke(!) aferin sana.

Terörist diye tabir edip öldürdüğün kişiler bu resimdekiler mi?

filistin cocuklar

filistin cocuklar

Peki ya bunlar; yolda giden ambulansa fırlattığın roketle ölen doktorlar mı?

filistin doktor

Bunlarda ellerinde ki ağır silahlar olamalı, değil mi?

filistin sapan

 

 

Dualarımız seninle Filistin.
Dualarımız seninle Filistin.
Dualarımız seninle Filistin.


"Bu Dua'ya Amin Diyelim" :

 

05.01.2009 - 19:49
EkleBunu Sosyal Paylaşım Butonu0 Yorum | 277 Okuma

Dün mailleri kontrol ederken, uzun zamandır siteden mail gelmediğini fark ettim. Kontrol panelinden onaylanmamış yorumları inceliyordum ki; onca spam yorumdan sonra, yaklaşık iki aydır onay bekleyen yorumların olduğunu gördüm. Evet, sitedeki mail gönderme fonksiyonundan kaynaklanan bir problem yüzünden, yazdığınız yorumların onayı bu kadar uzun sürdü. Yorum yazıp ta, “ulan niye onaylamıyor bu adam, iki ay oldu be” diyen arkadaşlardan özür diliyorum. Kusura bakmayın. :)

Devamını Oku... | Etiketler : nesimia
11.11.2008 - 18:39
EkleBunu Sosyal Paylaşım Butonu2 Yorum | 523 Okuma

Az önce bana ait bir grup girdi(Yaklaşık 10 adet), garip bir şekilde gezegende göründü. Bu durumun benden kaynaklanmadığı belirtip, gezegen yetkililerinin duruma bir el atmasını rica ederim.

Not: Girdiler ve site kodlarında herhangi bir güncelleme yapılmamıştır.

Devamını Oku... | Etiketler : nesimia
06.11.2008 - 10:34

21:00 Prison Break (Cnbc-e)
21:30 Benfica – Galatasaray (TRT)
22:00 Bilimin ta Kendisi (NatGeo)
22:15 Breaking Bad (e2)

Ulan nidecez şimdi. :-(

Ne yapalım maçı izleriz herhalde.

03.11.2008 - 11:17
EkleBunu Sosyal Paylaşım Butonu10 Yorum | 986 Okuma

QT Creator, QT IDEQT Creator, Trolltech tarafından geliştirilen bir (IDE) uygulama geliştirme ortamıdır.  Eğer sadece QT uygulamaları geliştiriyorsanız (şuan için) tam size göre bir ortam. Gayet şık, hızlı ve hafif.


Sisteminize kurmak için aşağıdaki adresden platformunuza en uygun paketi indirebilirsiniz.

http://trolltech.com/developer/qt-creator/qt-creator#download-qt-creator

İlk izlenimlerimi aktarmam gerekirse;

Artıları

  • Karşılama penceresi
  • Gelişmiş C/C++ Editor
  • Tümleşik form tasarımı : Form dosyasını açtığınızda QT Designer bileşenleri ekrandaki yerlerini alıyor ve tasarıma başlayabiliyorsunuz. QT Designer da yaptığınız tüm işlemleri, QT Creator içerisinden de yapabiliyorsunuz. Bir süredir Eclipse içerisinden ki QT Designer bileşenlerini kullanmıyor/kullanamıyordum. Çünkü ara sıra ekran kilitleniyor ya da bileşenler çok geç tepki veriyordu.
  • Tümleşik yardım penceresi : Sınıf adının üzerine gelin ve F1 e basın :)
  • Program gayet hızlı çalışıyor zaten boyut olarak ta çok küçük, doğal olarak daha az belleğe ihtiyaç duyuyor. (Eclipse göre çok ama çok iyi. Uzun süredir VS.NET kullanmadığım için VS.NET'göre bir kıyaslama yapamıyorum, artık siz deneyip görün)
  • Gelişmiş filtre kutusu ile projelerde, kaynak kodlarda, yardım belgelerinde arama yapabilirsiniz.
  • Proje oluşturma sihirbazı (QT Designer Form Class benim için çok önemli) : GUI, konsol projeleri ve c++ kütüphanesi(library) oluşturabiliyorsunuz.
  • Designer içerisindeki hemen hemen her pencerede filtreleme yapılabiliyor. Bileşenler, özellikler hatta Actions içerisinde filtreleme yapabiliyorsunuz.
  • Property Editor'un görüntü tipi değiştirilebiliyor : Bileşenlerin alt alta değilde tıpkı Visual Basic 6 Ya da Delphi 'deki gibi yan yana dizilmesini istiyorsanız Property Editorde sağ tıklayıp görüntü tipini değiştirebiliyorsunuz.
  • Build&Run penceresinden çevre değişkenlerini düzenleyebiliyorsunuz.
  • Debug desteği : GDB(GNU symbolic debugger) kullanılıyor.

Eksileri

Devamını Oku... | Etiketler : qt - cpp
16.10.2008 - 10:46
EkleBunu Sosyal Paylaşım Butonu0 Yorum | 910 Okuma

QTicari, modüler otomasyon sisteminin beta-1 sürümü kullanıma hazır. Bu sürüm ile birlikte projenin lisansı da, GPLv3 olarak değiştirilmiştir. (Alpha-1 GPLv2 idi)

Projeye destek olmak için : 


İlk seçenek tercihimizdir. :-)

Projenin kaynak kodları ve ekran görüntüleri için:
http://www.nesimia.com/projects/qticari adresine tıklayabilirsiniz.

Şuan proje içerisinde iki adet modül, barkod ve ticari modülleri tümleşik olarak gelmektedir. Bu modüller hakkında kısaca bilgi vermek gerekirse;

Ticari: Bünyesinde; cari, stok, kasa, fatura gibi temel muhasebe modüllerini barındıran paket.
Kullanım belgeleri için:
http://forums.nesimia.com/index.php?9 adresine tıklayın.

Barkod: Barkod etiket tasarımı yapıp, çıktı alabilmenize yarayan modül.
Kullanım belgeleri için:
http://forums.nesimia.com/list.php?15 adresine tıklayın.

Ayrıca;

Kurulum ve yapılandırma belgeleri için:
http://forums.nesimia.com/list.php?8 adresine tıklayın.

Forumlar için :
http://forums.nesimia.com/index.php?5 adresine tıklayın.

Devamını Oku... | Etiketler : qticari - qt - cpp
05.10.2008 - 21:16

Önce "Istambul", şimdi de "Ali Baba"

QString t = "Ali Baba";
t.remove(QChar('a'), Qt::CaseInsensitive);
// t == "li Bb"

 

Kim bu "Ali Baba"?

;) QString

Devamını Oku... | Etiketler : qt - cpp
05.09.2008 - 17:34
EkleBunu Sosyal Paylaşım Butonu0 Yorum | 528 Okuma

Verilerinizde bir takım güncellemeler yaptınız ve tekrar başa dönmek istediniz. rollback() yapmanıza rağmen değişiklikler geri alınmadıysa;

  • Tablolarınızın depolama motoru transaction'nı destekleyen yapıya sahip değildir. Örneğin MyIsam gibi. Tablolarınızın depolama motorunu innodb yapabilirsiniz.
  • Yazdığınız kodlarda  autocommit olayını tetikleyen çağrılar olabilir. Örneğin Stored procedure çağrıları, autocommit olayını tetikleyerek tüm değişiklikleri onaylar. Veritabanı bağlantısı yapılırken "SET AUTOCOMMIT = 0" sorgusunu çalıştırarak autocommit'i kapayabilirsiniz.


MySQL sağolsun, ikincisi ile pek haşır neşir etti beni ;)

Devamını Oku... | Etiketler : db - mysql
01.09.2008 - 6:04
EkleBunu Sosyal Paylaşım Butonu0 Yorum | 1080 Okuma

Tamam anladık, kontrol basamağının nasıl hesaplanacağına dair bilgileri bir yerlerden bulup kopyaladınız ve sitenize eklediniz. Ama kardeşim, insan bilgilerin doğru olduğunu kontrol etmez mi? İşlem doğru yapılmış mı bir sağlama yapmaz mı?

Konu hakkında birkaç Türkçe makale ile karşılaştım. Anlatılanlar gibi yaparsanız kodunuz sadece EAN 13'de doğru çalışacaktır. Çünkü bir çoğunda, çift hanelerin toplamının 3 katının alınması gerektiği yazıyor. Oysaki EAN 8'de çift, EAN 13'de tek hanelerin toplamının 3 katı alınmalı. Her neyse biraz uğraştırdı ama konu hakkında İngilizce birkaç site(özellikle burası) bulunca sorunu çözdüm. Belki birilerinin işine yara diye yazdığım kodu sıcağı sıcağına buraya da yapıştırıyorum.

barkodUret() - v2 (Güncellendi)

QString seriBarkodTanimlari::barkodUret(int onEk, int baslangic){
       
    QString std = ui.cBoxStandart->currentText();
    QString strOnEk = QString::number(onEk);
    QString strBaslangic = QString::number(baslangic);
    QString barkod;

    if ( (std == "EAN 8") ||  (std == "EAN 13") ){
       
        int uzunluk = strOnEk.length() + strBaslangic.length() + 1; //+1 Kontrol Bit'i için
       
        if ( (std == "EAN 8") && (uzunluk > 8) ) return QString();
        else if ( (std == "EAN 13") && (uzunluk > 13) ) return QString();
       
        if (std == "EAN 8")    barkod.fill('0',8 - uzunluk);
        else barkod.fill('0',13 - uzunluk);
       
        barkod = strOnEk + barkod + strBaslangic;
        uzunluk = barkod.length();
       
        int tek = 0;
        int cift = 0;
       
        for (int i=0; i<uzunluk; i++){
           
            if ( i%2) tek +=  barkod.mid(i,1).toInt();           
            else cift +=  barkod.mid(i,1).toInt();
           
        }
               
        int toplam;
       
        if (std == "EAN 8") toplam = (cift * 3) + tek;
        else toplam = (tek * 3) + cift;
               
        int onunKati;
       
        if (toplam%10 != 0)
            onunKati = QString(QString::number(QString::number(toplam).mid(0, QString::number(toplam).length() - 1 ).toInt() + 1) + "0").toInt();
        else
            onunKati = toplam;
       
        int checkDigit = onunKati - toplam;
       
        return barkod + QString::number(checkDigit);
    }
    else return QString();
}

Devamını Oku... | Etiketler : qticari - qt - cpp - barkod - ean
Google
 
En Son Yorumlar
  • Biltet.com:Sanırım Project Explorer ALt+0 tarzı bi kısayolla açılıyo ii günler...
  • Güvenlik Sistemi:Sizi en içten duygularımla tebrik etmek istiyorum.Projenizde ve bundan sonra yapacağınız projel...
  • Rahman Yazgan:http://www.youtube.com/watch?v=QLT7oEt6gLE&feature=related Şu basi...
  • Rahman Yazgan:@ndr : http://img269.imageshack.us/img269/6452/qtcreator.jpg [...
  • Murat:Bence örnekler çok yerinde ve güzel örnekler. Fakat Bence artık forumların aktif olması gerek...
  • Nesimi ACARCA:Yanlış yerden indiriyorsunuz, hemen yan kısımdaki “LGPL/Free Downloads” sekmesine tıklayın...
  • Knsptk:Tamam tamam.Buldum insinde kurulum yapayım.Bide birşey söylemek istiyorum ben devc++ derleyicisin...
  • knsptk:Windows - MS Visual Studio 2003:http://dist.trolltech.com/developer/download/qt-win-eval-4.5.1-vs200...
  • Knsptk:Verdiğiniz siteden inmiyor link kırık downloads dan windows bölümüne geliyorum form istiyor do...
  • azim:proje gayet hoş.başarınızın devamını dilerim.....
Sponsor Bağlantı