docs.kde.org
Базовый исходный код
Пред.
След.

Базовый исходный код

Чтобы понять принцип работы KDE-программы, давайте сначала поближе рассмотрим исходный код, предоставленный Мастером приложений. Разберём код (почти) построчно, в том порядке, в котором он выполняется, до момента, когда программа войдёт в главный цикл событий и будет ожидать действий от пользователя. Т.к. большинство программ KDE имеют похожую структуру, это поможет вам легче ориентироваться в коде других программ (благо, се они распространяются с открытым исходным кодом).

Функция main()

Выполнение программы начинается с функции main(). Она прописана в файле main.cpp, её можно найти через "Обзор классов", в ветке "Глобальные функции".

1  int main(int argc, char **argv)
2  {
3      KAboutData about("kscribble", I18N_NOOP("KScribble"), version, description,
4                       KAboutData::License_GPL, "(C) 2002 Your Name", 0, 0, "you@you.com");
5      about.addAuthor( "Your Name", 0, "you@you.com" );
6      KCmdLineArgs::init(argc, argv, &about);
7      KCmdLineArgs::addCmdLineOptions(options);
8      KApplication app;
9  
10    // register ourselves as a dcop client
11    app.dcopClient()->registerAs(app.name(), false);
12 
13    // see if we are starting with session management
14    if (app.isSessionRestored())
15        RESTORE(KScribble)
16    else
17    {
18        // no session.. just start up normally
19        KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
20        if (args->count() == 0)
21        {
22            KScribble *widget = new KScribble;
23            widget->show();
24        }
25        else
26        {
27            int i = 0;
28            for (; i < args->count(); i++)
29            {
30                KScribble *widget = new KScribble;
31                widget->show();
32                widget->load(args->url(i));
33            }
34        }
35        args->clear();
36    }
37
38    return app.exec();
39 }

В ней создаётся объект KApplication, но перед этим добавляются некоторые методы KDE, указывающие информацию о программе и авторе.

Запуск пользвтельского приложения

... (забыли написать)

Конструктор

Давайте посмотрим на использование конструктора

1  KScribble::KScribble()
2      : KMainWindow( 0, "KScribble" ),
3        m_view(new KScribbleView(this)),
4        m_printer(0)
5  {
6      // accept dnd
7      setAcceptDrops(true);
8  
9      // tell the KMainWindow that this is indeed the main widget
10     setCentralWidget(m_view);
11 
12     // then, setup our actions
13     setupActions();
14 
15     // and a status bar
16     statusBar()->show();
17 
18     // allow the view to change the statusbar and caption
19     connect(m_view, SIGNAL(signalChangeStatusbar(const QString&)),
20             this,   SLOT(changeStatusbar(const QString&)));
21     connect(m_view, SIGNAL(signalChangeCaption(const QString&)),
22             this,   SLOT(changeCaption(const QString&)));
23
24  }

KScribble наследует класс KMainWindow - базовый класс KDE-программ. Класс KScribbleView инициализируется как центральный элемент управления, KStatusBar создаётся методом statusBar() (строка 16), затем некоторые сигналы соединяются со слотами.

Пред.
След.
Начало


docs.kde.org