// Slot for launching a new gui.
// This is the button's default action for launching a gui.
// Normally the button would be within a container, such as a tab on a gui, that will provide a 'launch gui' mechanism.
void QEGenericButton::startGui( const QEActionRequests & request )
{
    // Only handle file open requests
    if( request.getKind() != QEActionRequests::KindOpenFile )
    {
        return;
    }

    // If there is enough arguments, open the file
    if (request.getArguments().count () >= 1)
    {
        // Build the gui
        // Build it in a new window.
        QMainWindow* w = new QMainWindow;
        QEForm* gui = new QEForm( request.getArguments().first() );
        if( gui )
        {
            if( gui->readUiFile())
            {
                w->setCentralWidget( gui );
                w->show();
            }
            else
            {
                delete gui;
                gui = NULL;
            }
        }
        else
        {
            delete w;
        }
    }
}
示例#2
0
// Slot to receive a request to create a window from the QE framework.
// When a QE Push Button has been set up with a GUI file name and it is clicked
// it looks to see if a handler to take window creation requests has been set up
// in the ContainerProfile. This application has set up this slot as a window
// creationhandler.
// This handler does not have to be aware of any context of the widget that
// made the request. All details such as the macro substitutions required are
// provided in the request.
// open a dialog.
// For this application, only one type of request is accepted - open a .ui file.
// It uses a QEForm to load the .ui file and place it in a dialog.
void MainWindow::requestAction( const QEActionRequests& request )
{
    // Only handle file open requests
    if( request.getKind() != QEActionRequests::KindOpenFile )
    {
        return;
    }

    // If there is enough arguments, open the file
    if (request.getArguments().count () >= 1)
    {
        // Build the gui and load it into a dialog.
        // Note, this is very similar to the default method that QE push buttons uses
        // to present a gui if the application has not provided a handler to
        // create GUIs through the ContainerProfile.
        QDialog* d = new QDialog();
        QEForm* gui = new QEForm( request.getArguments().first() );
        if( gui )
        {
            if( gui->readUiFile())
            {
                gui->setParent( d );
                d->exec();
            }
            else
            {
                delete gui;
                gui = NULL;
            }
        }
        else
        {
            delete d;
        }
    }
}