• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KDEUI

KDialog Class Reference

#include <kdialog.h>

Inheritance diagram for KDialog:

Inheritance graph
[legend]

List of all members.


Detailed Description

A dialog base class with standard buttons and predefined layouts.

Provides basic functionality needed by nearly all dialogs.

It offers the standard action buttons you'd expect to find in a dialog as well as the capability to define at most three configurable buttons. You can define a main widget that contains your specific dialog layout

The class takes care of the geometry management. You only need to define a minimum size for the widget you want to use as the main widget.

By default, the dialog is non-modal.

Standard buttons (action buttons):

You select which buttons should be displayed, but you do not choose the order in which they are displayed. This ensures a standard interface in KDE. The button order can be changed, but this ability is only available for a central KDE control tool. The following buttons are available: OK, Cancel/Close, Apply/Try, Default, Help and three user definable buttons: User1, User2 and User3. You must specify the text of the UserN buttons. Each button emit a signal, so you can choose to connect that signal.

The default action of the Help button will open the help system if you have provided a path to the help text. The default action of Ok and Cancel will run QDialog::accept() and QDialog::reject(), which you can override by reimplementing slotButtonClicked(). The default action of the Close button will close the dialog.

Note that the KDialog will animate a button press when the user presses Escape. The button that is enabled is either Cancel, Close or the button that is defined by setEscapeButton(). Your custom dialog code should reimplement the keyPressEvent and animate the cancel button so that the dialog behaves like regular dialogs.

Layout:

The dialog consists of a help area on top (becomes visible if you define a help path and use enableLinkedHelp()), the main area which is the built-in dialog face or your own widget in the middle and by default a button box at the bottom. The button box can also be placed at the right edge (to the right of the main widget). Use setButtonsOrientation() to control this behavior. A separator can be placed above the button box (or to the left when the button box is at the right edge).

Standard compliance:

The marginHint() and spacingHint() sizes shall be used whenever you lay out the interior of a dialog. One special note. If you make your own action buttons (OK, Cancel etc), the space between the buttons shall be spacingHint(), whereas the space above, below, to the right and to the left shall be marginHint(). If you add a separator line above the buttons, there shall be a marginHint() between the buttons and the separator and a marginHint() above the separator as well.

Example:

   KDialog *dialog = new KDialog( this );
   dialog->setCaption( "My title" );
   dialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );

   FooWidget *widget = new FooWidget( dialog );
   dialog->setMainWidget( widget );
   connect( dialog, SIGNAL( applyClicked() ), widget, SLOT( save() ) );
   connect( dialog, SIGNAL( okClicked() ), widget, SLOT( save() ) );
   connect( widget, SIGNAL( changed( bool ) ), dialog, SLOT( enableButtonApply( bool ) ) );

   dialog->enableButtonApply( false );
   dialog->show();

This class can be used in many ways. Note that most KDE ui widgets and many of KDE core applications use the KDialog so for more inspiration you should study the code for these.

See also:
KPageDialog
Author:
Thomas Tanghus <tanghus@earthling.net>

Espen Sand <espensa@online.no>

Mirko Boehm <mirko@kde.org>

Olivier Goffart <ogoffart at kde.org>

Tobias Koenig <tokoe@kde.org>

Definition at line 127 of file kdialog.h.


Public Types

enum  ButtonCode {
  None = 0x00000000, Help = 0x00000001, Default = 0x00000002, Ok = 0x00000004,
  Apply = 0x00000008, Try = 0x00000010, Cancel = 0x00000020, Close = 0x00000040,
  No = 0x00000080, Yes = 0x00000100, Reset = 0x00000200, Details = 0x00000400,
  User1 = 0x00001000, User2 = 0x00002000, User3 = 0x00004000, NoDefault = 0x00008000
}
enum  ButtonPopupMode { InstantPopup = 0, DelayedPopup = 1 }
enum  CaptionFlag { NoCaptionFlags = 0, AppNameCaption = 1, ModifiedCaption = 2, HIGCompliantCaption = AppNameCaption }

Public Slots

virtual void setCaption (const QString &caption)
virtual void setCaption (const QString &caption, bool modified)
virtual void setPlainCaption (const QString &caption)
void enableButton (ButtonCode id, bool state)
void enableButtonOk (bool state)
void enableButtonApply (bool state)
void enableButtonCancel (bool state)
void enableLinkedHelp (bool state)
void setHelpLinkText (const QString &text)
void setHelp (const QString &anchor, const QString &appname=QString())
bool isDetailsWidgetVisible () const
void setDetailsWidgetVisible (bool visible)
void setDetailsWidget (QWidget *detailsWidget)
void delayedDestruct ()

Signals

void layoutHintChanged ()
void helpClicked ()
void defaultClicked ()
void resetClicked ()
void user3Clicked ()
void user2Clicked ()
void user1Clicked ()
void applyClicked ()
void tryClicked ()
void okClicked ()
void yesClicked ()
void noClicked ()
void cancelClicked ()
void closeClicked ()
void buttonClicked (KDialog::ButtonCode button)
void hidden ()
void finished ()
void aboutToShowDetails ()

Public Member Functions

 KDialog (QWidget *parent=0, Qt::WFlags flags=0)
 ~KDialog ()
void setButtons (ButtonCodes buttonMask)
void setButtonsOrientation (Qt::Orientation orientation)
void setEscapeButton (ButtonCode id)
void setDefaultButton (ButtonCode id)
ButtonCode defaultButton () const
void showButtonSeparator (bool state)
void showButton (ButtonCode id, bool state)
void setButtonText (ButtonCode id, const QString &text)
QString buttonText (ButtonCode id) const
void setButtonIcon (ButtonCode id, const KIcon &icon)
KIcon buttonIcon (ButtonCode id) const
void setButtonToolTip (ButtonCode id, const QString &text)
QString buttonToolTip (ButtonCode id) const
void setButtonWhatsThis (ButtonCode id, const QString &text)
QString buttonWhatsThis (ButtonCode id) const
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
void setButtonMenu (ButtonCode id, QMenu *menu, ButtonPopupMode popupmode=InstantPopup)
void setButtonFocus (ButtonCode id)
void setInitialSize (const QSize &size)
void incrementInitialSize (const QSize &size)
void restoreDialogSize (const KConfigGroup &config)
void saveDialogSize (KConfigGroup &config, KConfigGroup::WriteConfigFlags options=KConfigGroup::Normal) const
QString helpLinkText () const
bool isButtonEnabled (ButtonCode id) const
KPushButton * button (ButtonCode id) const
void setMainWidget (QWidget *widget)
QWidget * mainWidget ()
virtual QSize sizeHint () const
virtual QSize minimumSizeHint () const

Static Public Member Functions

static int marginHint ()
static int spacingHint ()
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
static void resizeLayout (QWidget *widget, int margin, int spacing)
static void resizeLayout (QLayout *lay, int margin, int spacing)
static void centerOnScreen (QWidget *widget, int screen=-1)
static bool avoidArea (QWidget *widget, const QRect &area, int screen=-1)

Protected Slots

virtual void slotButtonClicked (int button)
void updateGeometry ()

Protected Member Functions

virtual void hideEvent (QHideEvent *)
virtual void closeEvent (QCloseEvent *e)
virtual void keyPressEvent (QKeyEvent *)
 KDialog (KDialogPrivate &dd, QWidget *parent, Qt::WFlags flags=0)

Protected Attributes

KDialogPrivate *const d_ptr

Member Enumeration Documentation

enum KDialog::ButtonCode

Enumerator:
None 
Help  Show Help button. (this button will run the help set with setHelp).
Default  Show Default button.
Ok  Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted).
Apply  Show Apply button.
Try  Show Try button.
Cancel  Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected).
Close  Show Close-button. (this button closes the dialog).
No  Show No button. (this button closes the dialog and sets the result to KDialog::No).
Yes  Show Yes button. (this button closes the fialog and sets the result to KDialog::Yes).
Reset  Show Reset button.
Details  Show Details button. (this button will show the detail widget set with setDetailsWidget).
User1  Show User defined button 1.
User2  Show User defined button 2.
User3  Show User defined button 3.
NoDefault  Used when specifying a default button; indicates that no button should be marked by default.

Definition at line 135 of file kdialog.h.

enum KDialog::ButtonPopupMode

Enumerator:
InstantPopup 
DelayedPopup 

Definition at line 156 of file kdialog.h.

enum KDialog::CaptionFlag

Enumerator:
NoCaptionFlags 
AppNameCaption 
ModifiedCaption 
HIGCompliantCaption 

Definition at line 417 of file kdialog.h.


Constructor & Destructor Documentation

KDialog::KDialog ( QWidget *  parent = 0,
Qt::WFlags  flags = 0 
) [explicit]

Creates a dialog.

Parameters:
parent The parent of the dialog.
flags The widget flags passed to the QDialog constructor

Definition at line 166 of file kdialog.cpp.

KDialog::~KDialog (  ) 

Destroys the dialog.

Definition at line 178 of file kdialog.cpp.

KDialog::KDialog ( KDialogPrivate &  dd,
QWidget *  parent,
Qt::WFlags  flags = 0 
) [protected]

Definition at line 172 of file kdialog.cpp.


Member Function Documentation

void KDialog::setButtons ( ButtonCodes  buttonMask  ) 

Creates (or recreates) the button box and all the buttons in it.

This will reset all default KGuiItem of all button.

Parameters:
buttonMask Specifies what buttons will be made.

Definition at line 183 of file kdialog.cpp.

void KDialog::setButtonsOrientation ( Qt::Orientation  orientation  ) 

Sets the orientation of the button box.

It can be Vertical or Horizontal. If Horizontal (default), the button box is positioned at the bottom of the dialog. If Vertical it will be placed at the right edge of the dialog.

Parameters:
orientation The button box orientation.

Definition at line 245 of file kdialog.cpp.

void KDialog::setEscapeButton ( ButtonCode  id  ) 

Sets the button that will be activated when the Escape key is pressed.

By default, the Escape key is mapped to either the Cancel or the Close button if one of these buttons are defined. The user expects that Escape will cancel an operation so use this function with caution.

Parameters:
id The button code.

Definition at line 259 of file kdialog.cpp.

void KDialog::setDefaultButton ( ButtonCode  id  ) 

Sets the button that will be activated when the Enter key is pressed.

By default, this is the Ok button if it is present

Parameters:
id The button code.

Definition at line 264 of file kdialog.cpp.

KDialog::ButtonCode KDialog::defaultButton (  )  const

Returns the button code of the default button.

Definition at line 281 of file kdialog.cpp.

void KDialog::showButtonSeparator ( bool  state  ) 

Hide or display the a separator line drawn between the action buttons an the main widget.

Definition at line 629 of file kdialog.cpp.

void KDialog::showButton ( ButtonCode  id,
bool  state 
)

Hide or display a general action button.

Only buttons that have been created in the constructor can be displayed. This method will not create a new button.

Parameters:
id Button identifier.
state true display the button(s).

Definition at line 700 of file kdialog.cpp.

void KDialog::setButtonText ( ButtonCode  id,
const QString &  text 
)

Sets the text of any button.

Parameters:
id The button identifier.
text Button text.

Definition at line 727 of file kdialog.cpp.

QString KDialog::buttonText ( ButtonCode  id  )  const

Returns the text of any button.

Definition at line 741 of file kdialog.cpp.

void KDialog::setButtonIcon ( ButtonCode  id,
const KIcon &  icon 
)

Sets the icon of any button.

Parameters:
id The button identifier.
icon Button icon.

Definition at line 750 of file kdialog.cpp.

KIcon KDialog::buttonIcon ( ButtonCode  id  )  const

Returns the icon of any button.

Definition at line 757 of file kdialog.cpp.

void KDialog::setButtonToolTip ( ButtonCode  id,
const QString &  text 
)

Sets the tooltip text of any button.

Parameters:
id The button identifier.
text Button text.

Definition at line 766 of file kdialog.cpp.

QString KDialog::buttonToolTip ( ButtonCode  id  )  const

Returns the tooltip of any button.

Definition at line 777 of file kdialog.cpp.

void KDialog::setButtonWhatsThis ( ButtonCode  id,
const QString &  text 
)

Sets the "What's this?" text of any button.

Parameters:
id The button identifier.
text Button text.

Definition at line 786 of file kdialog.cpp.

QString KDialog::buttonWhatsThis ( ButtonCode  id  )  const

Returns the "What's this?" text of any button.

Definition at line 797 of file kdialog.cpp.

void KDialog::setButtonGuiItem ( ButtonCode  id,
const KGuiItem &  item 
)

Sets the KGuiItem directly for the button instead of using 3 methods to set the text, tooltip and whatsthis strings.

This also allows to set an icon for the button which is otherwise not possible for the extra buttons beside Ok, Cancel and Apply.

Parameters:
id The button identifier.
item The KGuiItem for the button.

Definition at line 707 of file kdialog.cpp.

void KDialog::setButtonMenu ( ButtonCode  id,
QMenu *  menu,
ButtonPopupMode  popupmode = InstantPopup 
)

Sets the menu of any button.

Parameters:
id The button identifier.
menu The menu.
popupmode Choose if KPushButton setMenu or setDelayedMenu is used

Definition at line 716 of file kdialog.cpp.

void KDialog::setButtonFocus ( ButtonCode  id  ) 

Sets the focus to the button of the passed id.

Definition at line 806 of file kdialog.cpp.

void KDialog::setInitialSize ( const QSize &  size  ) 

Convenience method.

Sets the initial dialog size.

This method should only be called right before show() or exec(). The initial size will be ignored if smaller than the dialog's minimum size.

Parameters:
size Startup size.

Definition at line 651 of file kdialog.cpp.

void KDialog::incrementInitialSize ( const QSize &  size  ) 

Convenience method.

Add a size to the default minimum size of a dialog.

This method should only be called right before show() or exec().

Parameters:
size Size added to minimum size.

Definition at line 657 of file kdialog.cpp.

void KDialog::restoreDialogSize ( const KConfigGroup &  config  ) 

Restores the dialogs size from the configuration according to the screen size.

Note:
the group must be set before calling
Parameters:
config The config group to read from.

Definition at line 1016 of file kdialog.cpp.

void KDialog::saveDialogSize ( KConfigGroup &  config,
KConfigGroup::WriteConfigFlags  options = KConfigGroup::Normal 
) const

Saves the dialogs size dependant on the screen dimension either to the global or application config file.

Note:
the group must be set before calling
Parameters:
config The config group to read from.
options passed to KConfigGroup::writeEntry()

Definition at line 1031 of file kdialog.cpp.

QString KDialog::helpLinkText (  )  const

Returns the help link text.

If no text has been defined, "Get help..." (internationalized) is returned.

Returns:
The help link text.
See also:
enableLinkedHelp()

setHelpLinkText()

setHelp()

Definition at line 983 of file kdialog.cpp.

bool KDialog::isButtonEnabled ( ButtonCode  id  )  const

Returns whether any button is enabled.

Definition at line 676 of file kdialog.cpp.

KPushButton * KDialog::button ( ButtonCode  id  )  const

Returns the button that corresponds to the id.

Normally you should not use this function. Never delete the object returned by this function. See also enableButton(), showButton(), setButtonGuiItem().

Parameters:
id Identifier of the button.
Returns:
The button or 0 if the button does not exist.

Definition at line 663 of file kdialog.cpp.

int KDialog::marginHint (  )  [static]

Return the number of pixels you shall use between a dialog edge and the outermost widget(s) according to the KDE standard.

Definition at line 438 of file kdialog.cpp.

int KDialog::spacingHint (  )  [static]

Return the number of pixels you shall use between widgets inside a dialog according to the KDE standard.

Definition at line 443 of file kdialog.cpp.

QString KDialog::makeStandardCaption ( const QString &  userCaption,
QWidget *  window = 0,
CaptionFlags  flags = HIGCompliantCaption 
) [static]

Builds a caption that contains the application name along with the userCaption using a standard layout.

To make a compliant caption for your window, simply do: setWindowTitle(KDialog::makeStandardCaption(yourCaption));

To ensure that the caption is appropriate to the desktop in which the application is running, pass in a pointer to the window the caption will be applied to.

If using a KDialog or KMainWindow subclass, call setCaption instead and an appropraite standard caption will be created for you

Parameters:
userCaption The caption string you want to display in the window caption area. Do not include the application name!
window a pointer to the window this application will apply to
flags 
Returns:
the created caption

Definition at line 448 of file kdialog.cpp.

void KDialog::resizeLayout ( QWidget *  widget,
int  margin,
int  spacing 
) [static]

Resize every layout manager used in widget and its nested children.

Parameters:
widget The widget used.
margin The new layout margin.
spacing The new layout spacing.

Definition at line 504 of file kdialog.cpp.

void KDialog::resizeLayout ( QLayout *  lay,
int  margin,
int  spacing 
) [static]

Resize every layout associated with lay and its children.

Parameters:
lay layout to be resized
margin The new layout margin
spacing The new layout spacing

Definition at line 518 of file kdialog.cpp.

void KDialog::centerOnScreen ( QWidget *  widget,
int  screen = -1 
) [static]

Centers widget on the desktop, taking multi-head setups into account.

If screen is -1, widget will be centered on its current screen (if it was shown already) or on the primary screen. If screen is -3, widget will be centered on the screen that currently contains the mouse pointer. screen will be ignored if a merged display (like Xinerama) is not in use, or merged display placement is not enabled in kdeglobals.

Definition at line 559 of file kdialog.cpp.

bool KDialog::avoidArea ( QWidget *  widget,
const QRect &  area,
int  screen = -1 
) [static]

Places widget so that it doesn't cover a certain area of the screen.

This is typically used by the "find dialog" so that the match it finds can be read. For screen, see centerOnScreen

Returns:
true on success (widget doesn't cover area anymore, or never did), false on failure (not enough space found)

Definition at line 577 of file kdialog.cpp.

void KDialog::setMainWidget ( QWidget *  widget  ) 

Sets the main widget of the dialog.

Definition at line 294 of file kdialog.cpp.

QWidget * KDialog::mainWidget (  ) 

Returns:
The current main widget.

Will create a QWidget as the mainWidget if none was set before. This way you can write

   ui.setupUi(mainWidget());
when using designer.

Definition at line 306 of file kdialog.cpp.

QSize KDialog::sizeHint (  )  const [virtual]

Reimplemented from QDialog.

Reimplemented in KShortcutsDialog.

Definition at line 314 of file kdialog.cpp.

QSize KDialog::minimumSizeHint (  )  const [virtual]

Reimplemented from QDialog.

Definition at line 320 of file kdialog.cpp.

void KDialog::setCaption ( const QString &  caption  )  [virtual, slot]

Make a KDE compliant caption.

Parameters:
caption Your caption. Do not include the application name in this string. It will be added automatically according to the KDE standard.

Definition at line 475 of file kdialog.cpp.

void KDialog::setCaption ( const QString &  caption,
bool  modified 
) [virtual, slot]

Makes a KDE compliant caption.

Parameters:
caption Your caption. Do not include the application name in this string. It will be added automatically according to the KDE standard.
modified Specify whether the document is modified. This displays an additional sign in the title bar, usually "**".

Definition at line 481 of file kdialog.cpp.

void KDialog::setPlainCaption ( const QString &  caption  )  [virtual, slot]

Make a plain caption without any modifications.

Parameters:
caption Your caption. This is the string that will be displayed in the window title.

Definition at line 494 of file kdialog.cpp.

void KDialog::enableButton ( ButtonCode  id,
bool  state 
) [slot]

Enable or disable (gray out) a general action button.

Parameters:
id Button identifier.
state true enables the button(s).

Definition at line 669 of file kdialog.cpp.

void KDialog::enableButtonOk ( bool  state  )  [slot]

Enable or disable (gray out) the OK button.

Parameters:
state true enables the button.

Definition at line 685 of file kdialog.cpp.

void KDialog::enableButtonApply ( bool  state  )  [slot]

Enable or disable (gray out) the Apply button.

Parameters:
state true enables the button.

Definition at line 690 of file kdialog.cpp.

void KDialog::enableButtonCancel ( bool  state  )  [slot]

Enable or disable (gray out) the Cancel button.

Parameters:
state true enables the button.

Definition at line 695 of file kdialog.cpp.

void KDialog::enableLinkedHelp ( bool  state  )  [slot]

Display or hide the help link area on the top of the dialog.

Parameters:
state true will display the area.
See also:
helpLinkText()

setHelpLinkText()

setHelp()

Definition at line 939 of file kdialog.cpp.

void KDialog::setHelpLinkText ( const QString &  text  )  [slot]

Sets the text that is shown as the linked text.

If text is empty, the text "Get help..." (internationalized) is used instead.

Parameters:
text The link text.
See also:
helpLinkText()

enableLinkedHelp()

setHelp()

Definition at line 975 of file kdialog.cpp.

void KDialog::setHelp ( const QString &  anchor,
const QString &  appname = QString() 
) [slot]

Sets the help path and topic.

Parameters:
anchor Defined anchor in your docbook sources
appname Defines the appname the help belongs to If empty it's the current one
Note:
The help button works differently for the class KCMultiDialog, so it does not make sense to call this function for Dialogs of that type. See KCMultiDialog::slotHelp() for more information.

Definition at line 967 of file kdialog.cpp.

bool KDialog::isDetailsWidgetVisible (  )  const [slot]

Returns the status of the Details button.

Definition at line 829 of file kdialog.cpp.

void KDialog::setDetailsWidgetVisible ( bool  visible  )  [slot]

Sets the status of the Details button.

Definition at line 834 of file kdialog.cpp.

void KDialog::setDetailsWidget ( QWidget *  detailsWidget  )  [slot]

Sets the widget that gets shown when "Details" is enabled.

The dialog takes over ownership of the widget. Any previously set widget gets deleted.

Definition at line 813 of file kdialog.cpp.

void KDialog::delayedDestruct (  )  [slot]

Destruct the dialog delayed.

You can call this function from slots like closeClicked() and hidden(). You s