Development/Tutorials/KDE3/KDockWidget: Difference between revisions

From KDE TechBase
(move category to bottom)
(the code it for qt3/kde3, so makr the code snippets as such, and add the links to the two kde3 classes)
Line 3: Line 3:
This tutorial shows examples on how to create docking widgets that dock to your main application.
This tutorial shows examples on how to create docking widgets that dock to your main application.


The first confusing part about making docking windows is that you need to subclass KDockMainWindow rather than KMainWindow for your KDE application. In addition to converting over to KDockMainWindow, you will need to create two dock widget in order to notice any docking windows. In the example you will notice that one dock widget becomes the station for the other docking widget.
The first confusing part about making docking windows is that you need to subclass {{class|KDockMainWindow|kdelibs|3.5}} rather than {{class|KMainWindow|kdelibs|3.5}} for your KDE application. In addition to converting over to KDockMainWindow, you will need to create two dock widget in order to notice any docking windows. In the example you will notice that one dock widget becomes the station for the other docking widget.


'''Note:''' If you find this explanation incorrect please let me know.
'''Note:''' If you find this explanation incorrect please let me know.
Line 19: Line 19:
4. Name the Application '''tutKDockWidget'''
4. Name the Application '''tutKDockWidget'''


5. Copy and paste the following files over '''tutKDockWidget.cpp''' and '''tutKDockWidget.h'''
5. Copy and paste the following files over '''{{path|tutKDockWidget.cpp}}''' and '''{{path|tutKDockWidget.h}}'''


== tutkdockwidget.cpp ==
== tutkdockwidget.cpp ==


<code cppqt>
<code cppqt3>
#include "tutkdockwidget.h"
#include "tutkdockwidget.h"


Line 81: Line 81:
== kdockwidget.h ==
== kdockwidget.h ==


<code cppqt>
<code cppqt3>
#ifndef _TUTKDOCKWIDGET_H_
#ifndef _TUTKDOCKWIDGET_H_
#define _TUTKDOCKWIDGET_H_
#define _TUTKDOCKWIDGET_H_

Revision as of 09:42, 6 June 2007

Dock Widget Tutorial

This tutorial shows examples on how to create docking widgets that dock to your main application.

The first confusing part about making docking windows is that you need to subclass KDockMainWindow rather than KMainWindow for your KDE application. In addition to converting over to KDockMainWindow, you will need to create two dock widget in order to notice any docking windows. In the example you will notice that one dock widget becomes the station for the other docking widget.

Note: If you find this explanation incorrect please let me know.

Start a new project using kdevelop

1. First start Kdevelop.

2. Select New Project from the project menu

3. Select Simple KDE application located under C++ -> KDE

4. Name the Application tutKDockWidget

5. Copy and paste the following files over tutKDockWidget.cpp and tutKDockWidget.h

tutkdockwidget.cpp

  1. include "tutkdockwidget.h"
  1. include <qlabel.h>
  1. include <kdockwidget.h>
  2. include <klocale.h>

tutKDockWidget::tutKDockWidget()

   : KDockMainWindow( 0, "tutKDockWidget" )

{ // set the shell's ui resource file setXMLFile("tutkdockwidgetui.rc");

//define the main dock - Note: this window does not dock/undock KDockWidget* mainDock; mainDock = createDockWidget( "Falk's MainDockWidget", 0, 0L, "main_dock_widget");

//This can be any widget control QLabel* cw = new QLabel("label1",mainDock,"label1"); mainDock->setWidget( cw);

//This informs how docking will take place //KDockWidget::DockCorner = dock to all sides //KDockWidget::DockFullSite = dock to all sides + center //KDockWidget::DockFullDocking = KDockWidget::DockFullSite mainDock->setDockSite(KDockWidget::DockFullSite);

//Prevent docking station from being able to dock mainDock->setEnableDocking(KDockWidget::DockNone);


setView( mainDock);

//this tells the kDockMainWindow what control to use as its master dock control setMainDockWidget( mainDock);

//Here is really where the window that docks/undocked is defined KDockWidget* dockLeft; dockLeft = createDockWidget( "Intially left one", 0, 0L, i18n("The left dockwidget"));

//Again this can be any control QLabel* aw = new QLabel("label2",dockLeft,"label2"); dockLeft->setWidget( aw);

//Dock the control to the left side with 20 width dockLeft->manualDock( mainDock,KDockWidget::DockLeft,20); }

tutKDockWidget::~tutKDockWidget() { }

  1. include "tutkdockwidget.moc"

kdockwidget.h

  1. ifndef _TUTKDOCKWIDGET_H_
  2. define _TUTKDOCKWIDGET_H_
  1. ifdef HAVE_CONFIG_H
  2. include <config.h>
  3. endif
  1. include <kdockwidget.h>

//Important: notice that its KDockMainWindow rather than KMainWindow class tutKDockWidget : public KDockMainWindow {

   Q_OBJECT

public:

   /**
    * Default Constructor
    */
   tutKDockWidget();
   /**
    * Default Destructor
    */
   virtual ~tutKDockWidget();

};

  1. endif // _TUTKDOCKWIDGET_H_