Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# Using Custom TQDialogs

[ Previous: Using TQt Standard Dialogs ] [ Home ] [ Next: Using Existing Dialogs with TQMotifDialog ]

After we have replaced the standard dialogs, we move onto the custom dialogs. This project has a single custom dialog: the Page Edit dialog.

Instead of writing the code ourselves, we use TQt Designer to design our dialog. Designing a custom dialog is beyond the scope of this document: see the TQt Designer Manual if you're unfamiliar with TQt's visual design tool.

## Replacing the Page Edit Dialog

The custom TQDialog description for the Page Edit dialog is saved as `pageeditdialog.ui`. We add this file to the project file by adding the line

    FORMS = pageeditdialog.ui

to the `.pro` file, and regenerate the `Makefile`. The uic utility generates the code for our custom TQDialog, which is then compiled and linked into our application. (uic is invoked automatically from makefiles generated from `.pro` files.)

We need to pass the top-level TQMotifWidget as the client_data argument to the `EditPage` function, which we will use as the parent for our new `PageEditDialog`. We do this the same way as we have done for the Open and Save As dialogs in `todo.cpp`.

The `EditPage()` function is implemented in `actions.cpp`. We start by adding the includes needed for the `PageEditDialog` and TQLineEdit.

In the `EditPage()` function, We create the `PageEditDialog`, set the initial values of the three TQLineEdit widgets with values from the current page and execute the dialog.

        ...

At this point in the code, the page properties should be modified. The code to do this is in the `DoEditPage()` function. We move the contents of `DoEditPage()` to this point and remove the `DoEditPage()` function completely.

The `Page` struct defined in `page.h` stores strings in `char*` arrays. Since the PageEditDialog and the data it contains will be destroyed when we return from this function, we need to convert the unicode TQString data into a TQCString in the local encoding and duplicate it with tqstrdup().

The same process must be done for the minorTab text:

... and for the majorTab text:

[ Previous: Using TQt Standard Dialogs ] [ Home ] [ Next: Using Existing Dialogs with TQMotifDialog ]