The example program on this page may be used, distributed and modified without limitation. C0664 510077 qtdoc-1.2-a4-2.ps

Using menus

This example demontrates simple use of menus.
//
// Qt Example Application: menu
//
// This example demonstrates how to use menus in Qt.
//

#include "menu.h"
#include <qpopmenu.h>
#include <qkeycode.h>
#include <qapp.h>

MenuExample::MenuExample( QWidget *parent, const char *name )
    : QWidget( parent, name )
{
    QPopupMenu *print = new QPopupMenu;
    CHECK_PTR( print );
    print->insertItem( "Print to printer", this, SLOT(printer()) );
    print->insertItem( "Print to file", this, SLOT(file()) );
    print->insertItem( "Print to fax", this, SLOT(fax()) );
    print->insertSeparator();
    print->insertItem( "Printer Setup", this, SLOT(printerSetup()) );

    QPopupMenu *file = new QPopupMenu();
    CHECK_PTR( file );
    file->insertItem( "Open",  this, SLOT(open()), CTRL+Key_O );
    file->insertItem( "Save", this, SLOT(save()), CTRL+Key_S );
    file->insertItem( "Close", this, SLOT(closeDoc()), CTRL+Key_W );
    file->insertSeparator();
    file->insertItem( "Print", print, CTRL+Key_P );
    file->insertSeparator();
    file->insertItem( "Exit",  qApp, SLOT(quit()), CTRL+Key_Q );

    QPopupMenu *edit = new QPopupMenu();
    CHECK_PTR( edit );
    int undoID = edit->insertItem( "Undo", this, SLOT(undo()) );
    int redoID = edit->insertItem( "Redo", this, SLOT(redo()) );
    edit->setItemEnabled( undoID, FALSE );
    edit->setItemEnabled( redoID, FALSE );

    options = new QPopupMenu();
    CHECK_PTR( options );
    options->insertItem( "Normal Font", this, SLOT(normal()) );
    options->insertSeparator();
    boldID = options->insertItem( "Bold", this, SLOT(bold()) );
    underlineID = options->insertItem( "Underline", this, SLOT(underline()) );
    isBold = FALSE;
    isUnderline = FALSE;
    options->setCheckable( TRUE );

    QPopupMenu *help = new QPopupMenu;
    CHECK_PTR( help );
    help->insertItem( "About", this, SLOT(about()), CTRL+Key_H );

    menu = new QMenuBar( this );
    CHECK_PTR( menu );
    menu->insertItem( "&File", file );
    menu->insertItem( "&Edit", edit );
    menu->insertItem( "&Options", options );
    menu->insertSeparator();
    menu->insertItem( "&Help", help );

    label = new QLabel( this );
    CHECK_PTR( label );
    label->setGeometry( 20, rect().center().y()-20, width()-40, 40 );
    label->setFrameStyle( QFrame::Box | QFrame::Raised );
    label->setLineWidth( 1 );
    label->setAlignment( AlignCenter );

    connect( this,  SIGNAL(explain(const char *)),
             label, SLOT(setText(const char *)) );

    setMinimumSize( 100, 80 );
}

void MenuExample::open()
{
    emit explain( "File/Open selected" );
}

void MenuExample::save()
{
    emit explain( "File/Save selected" );
}

void MenuExample::closeDoc()
{
    emit explain( "File/Close selected" );
}

void MenuExample::undo()
{
    emit explain( "Edit/Undo selected" );
}

void MenuExample::redo()
{
    emit explain( "Edit/Redo selected" );
}

void MenuExample::normal()
{
    isBold = FALSE;
    isUnderline = FALSE;
    options->setItemChecked( boldID, isBold );
    options->setItemChecked( underlineID, isUnderline );
    emit explain( "Options/Normal selected" );
}

void MenuExample::bold()
{
    isBold = !isBold;
    options->setItemChecked( boldID, isBold );
    emit explain( "Options/Bold selected" );
}

void MenuExample::underline()
{
    isUnderline = !isUnderline;
    options->setItemChecked( underlineID, isUnderline );
    emit explain( "Options/Underline selected" );
}

void MenuExample::about()
{
    emit explain( "Help/About selected" );
}

void MenuExample::printer()
{
    emit explain( "File/Printer/Print selected" );
}

void MenuExample::file()
{
    emit explain( "File/Printer/Print To File selected" );
}

void MenuExample::fax()
{
    emit explain( "File/Printer/Print To Fax selected" );
}

void MenuExample::printerSetup()
{
    emit explain( "File/Printer/Printer Setup selected" );
}

void MenuExample::resizeEvent( QResizeEvent * )
{
    label->setGeometry( 20, rect().center().y()-20, width()-40, 40 );
}

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    MenuExample m;

    a.setMainWidget( &m );
    m.show();
    return a.exec();
}

Generated at 17:29, 1997/04/07 for Qt version 1.2 by the webmaster at Troll Tech