İçindekiler Tablosu

Önceki konu

Merhaba Dünya

Sonraki konu

KActions Kullanımı

Bu Sayfa

Bir Pencere Oluşturmak

Giriş

Önceki örneğimizde uygulamamız bir iletişim kutusu gösteriyordu sadece. Şimdi yapacağımız örnekle daha işlevsel bir uygulama geliştirme yolunda adımlar atacak ve KXmlGuiWindow sınıfına giriş yapacağız.

../_images/anapencere01.png

Kod

KXmlGuiWindow, menü çubukları, araç çubukları, durum çubuğu ve büyük bir parçacık için merkezde geniş bir alan ile tam bir ana pencere görünümü sunar. Örneğin help-menu önceden tanımlanmıştır. Çoğu KDE uygulaması, XML dosyalarıyla menü ve araç çubuğu düzenlerini tanımlamak için kolay bir yol sağladığı için bu sınıftan elde edilir. XMLGUI denen bu teknolojiyi bu örneğimizde kullanmayacak olsak da ilerideki uygulamalarımızda kendisinden yararlanacağız.

İşe yarar bir KXmlGuiWindow’a sahip olmak için onu alt sınıflamamız gerekir. Bu yüzden mainwindow.cpp ve mainwindow.h olmak üzere kodlarımızı içerecek iki dosya oluşturacağız.

mainwindow.h dosyamızın içeriği aşağıdaki gibi olacak:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <KXmlGuiWindow>
#include <KTextEdit>

class MainWindow : public KXmlGuiWindow
{
  public:
    MainWindow(QWidget *parent=0);

  private:
    KTextEdit* textArea;
};

#endif

İlk önce KXmlGuiWindow’u MainWindow : public KXmlGuiWindow sınıfıyla alt sınıflıyoruz. Sonra MainWindow(QWidget *parent=0); ile kurucuyu deklare ediyoruz. Ve son olarak da uygulamamızın en önemli kısmını oluşturacak nesneye bir işaretçi atıyoruz. KTextEdit ise otomatik imleç gizleme gibi çeşitli KDE güzelliklerine sahip genel bir zengin metin düzenleyicisidir.

mainwindow.cpp dosyasının içeriği ise aşağıdaki gibi olacak:

1
2
3
4
5
6
7
8
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
{
  textArea = new KTextEdit();
  setCentralWidget(textArea);
  setupGUI();
}

İlk olarak tabii ki sınıf deklarasyonlarını içeren başlık dosyasını kaynak koda dahil ediyoruz. textArea = new KTextEdit(); ile metin düzenleyicimizi bir nesne ile ilklendiriyoruz. Sonra KXmlGuiWindow’un KXmlGuiWindow’a pencerenin orta bölümünde ne görüneceğini söyleyen dahili setCentralWidget() fonksiyonunu kullanıyoruz. En son olarak da öntanımlı menü çubuklarını oluşturan ve daha pek çok sahne arkası iş gerçekleştiren KXmlGuiWindow::setupGUI() çağrılıyor.

Oluşturduğumuz pencereyi çalıştırmak için birkaç satır da main.cpp dosyasına eklememiz gerekiyor:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#include <KLocale>

#include "mainwindow.h"

int main (int argc, char *argv[])
{
  KAboutData aboutData( "tutorial2", 0,
      ki18n("Tutorial 2"), "1.0",
      ki18n("A simple text area"),
      KAboutData::License_GPL,
      ki18n("Copyright (c) 2013 Developer") );
  KCmdLineArgs::init( argc, argv, &aboutData );

  KApplication app;

  MainWindow* window = new MainWindow();
  window->show();

  return app.exec();
}

Burada önceki örneğimizden farklı çok az şey var dikkat edebileceğiniz gibi. Oluşturduğumuz mainwindow.h dosyasını kaynak koda dahil ediyoruz, MainWindow* window = new MainWindow(); ile MainWindow nesnemizi oluşturuyoruz ve window->show(); ile nesnemizin görüntülenmesini sağlıyoruz.

İnşa

Uygulamaları inşa etmek için en iyi yollardan biri CMake kullanmaktır. Bu kezki CMakeLists.txt dosyasını hazırlarken nasıl birden fazla dosyanın kullanılacağını göreceğiz:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
project (tutorial2)

find_package(KDE4 REQUIRED)
include_directories(${KDE4_INCLUDES})

set(tutorial2_SRCS 
  main.cpp
  mainwindow.cpp
)

kde4_add_executable(tutorial2 ${tutorial2_SRCS})
target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS})

Derleme ve Çalıştırma

Programlarınızı derlemek, bağlamak ve kurmak için:

mkdir build
cd build
cmake ..
make
make install

Ve uygulamayı çalıştırmak için de aşağıdaki komutu kullanabilirsiniz:

./tutorial2