12 Mayıs 2014 Pazartesi

Yeni Başlayanlar: Qt ile grafik çizimleri


Qt konusunda pek kaynak bulunmayışı bu nadide sistemin tanınmasına biraz engel olması nedeniyle yeni başlayanlara ufak fikirler vermek istedim. Tabi ki sizin C++ bilginizin var olduğunu kabul ediyorum.




Bunun için sayfamıza bir GraphicsView ve iki PushButton nesnesi ekliyoruz. Ekran görüntümüz şu şekilde olabilir.


Bu işlemden sonra referans tanımlarımızı yapmamız gerekir. Aşağıdaki kodları header dosyamıza ekliyoruz.

#include
#include
#include

Şimdi private olarak GraphicsScene pointerimizi oluşturmaya geldik. Burada pointer kullanarak oluşturacağımız scene nesnesinin bellekteki adresini yakalamış oluyoruz.

private:
    Ui::MainWindow *ui;
    QGraphicsScene *_qscene;
};

Private tanımımız yukarıda ki gibi bir hal almış olmalı. _qscene pointerimiz şimdilik boş. Tabi ki bunu widgetimizin oluşturulma anında tanımlayacağız. CPP dosyamıza geçerek oluşturma aşamasında kodumuzu şu şekilde ayarlıyoruz.

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    _qscene = new QGraphicsScene(this);
    ui->gwMain->setScene(_qscene);
}

Scene pointerimizi burada oluşturuyoruz. Tabi oluşturduğumuz scenenin parentini uygulamamızı referans olarak geçirmemiz gerek. gwMain ana ekrana oluşturduğumuz GraphicsView imize verdiğimiz ad. gwMain'in setScene özelliği ile pointerimizi geçiriyoruz. Artık _qscene nesnemiz üzerinde işlem yaptığımızda pointerimiz de değişeceği için GraphicsView nesnemiz otomatik güncellenecektir.
Her iki butonun clicked slotunu aşağıda ki gibi yapıyoruz.

void MainWindow::on_pbLine_clicked()
{
    QPen _qpen(Qt::black);
    _qscene->addLine(0,0,100,100, _qpen);
}

void MainWindow::on_pbRect_clicked()
{
    QPen _qpen(Qt::blue);
    QBrush _qbrush(Qt::yellow);
    _qscene->addRect(20,20, 120,120, _qpen, _qbrush);
}

Yukarıda ki iki kod QPen ve QBrush ile çizgi ve dörtgen oluşturmak için kullanılacak. Burada addLine ve addRect fonksiyonlarını anlamışsınızdır. Uygulamayı çalıştırıp her iki tuşa bastığımızda GraphicsView nesnemizde çizimler olacaktır.


Bir sonraki yazımda görüşünceye dek esenlikle...

0 yorum: