After we have replaced the standard dialogs, we move onto the custom
dialogs. This project has a single custom dialog: the Page Edit
dialog.
The custom QDialog 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 QDialog, 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 QMotifWidget 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 QLineEdit.
In the EditPage() function, We create the PageEditDialog, set
the initial values of the three QLineEdit 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 QString data into a QCString in the local encoding and
duplicate it with qstrdup().
The same process must be done for the minorTab text:
... and for the majorTab text:
[ Previous: Using Qt Standard Dialogs ]
[ Home ]
[ Next: Using Existing Dialogs with QMotifDialog ]