package MainWindow; use strict; use warnings; use QtCore4; use QtGui4; use QtCore4::isa qw( Qt::MainWindow ); use QtCore4::slots about => [], showDocumentation => [], open => []; use FindFileDialog; use Assistant; use TextEdit; sub assistant() { return this->{assistant}; } sub textViewer() { return this->{textViewer}; } sub fileMenu() { return this->{fileMenu}; } sub helpMenu() { return this->{helpMenu}; } sub assistantAct() { return this->{assistantAct}; } sub clearAct() { return this->{clearAct}; } sub openAct() { return this->{openAct}; } sub exitAct() { return this->{exitAct}; } sub aboutAct() { return this->{aboutAct}; } sub aboutQtAct() { return this->{aboutQtAct}; } # ![0] sub NEW { my ($class) = @_; $class->SUPER::NEW(); this->{assistant} = Assistant->new(); # ![0] this->{textViewer} = TextEdit(); textViewer->setContents(Qt::LibraryInfo::location(Qt::LibraryInfo::ExamplesPath()) . '/help/simpletextviewer/documentation/intro.html'); setCentralWidget(textViewer); createActions(); createMenus(); setWindowTitle(this->tr('Simple Text Viewer')); resize(750, 400); # ![1] } # [1] # [2] sub closeEvent { this->{assistant} = undef; } # [2] sub about { Qt::MessageBox::about(this, this->tr('About Simple Text Viewer'), this->tr("This example demonstrates how to use\n" . "Qt Assistant as help system for your\n" . 'own application.')); } # [3] sub showDocumentation { assistant->showDocumentation('index.html'); } # [3] sub open { my $dialog = FindFileDialog(textViewer, assistant); $dialog->exec(); } # [4] sub createActions { this->{assistantAct} = Qt::Action(this->tr('Help Contents'), this); assistantAct->setShortcut(Qt::KeySequence(Qt::KeySequence::HelpContents())); this->connect(assistantAct, SIGNAL 'triggered()', this, SLOT 'showDocumentation()'); # [4] this->{openAct} = Qt::Action(this->tr('&Open...'), this); openAct->setShortcut(Qt::KeySequence(Qt::KeySequence::Open())); this->connect(openAct, SIGNAL 'triggered()', this, SLOT 'open()'); this->{clearAct} = Qt::Action(this->tr('&Clear'), this); clearAct->setShortcut(Qt::KeySequence(this->tr('Ctrl+C'))); this->connect(clearAct, SIGNAL 'triggered()', textViewer, SLOT 'clear()'); this->{exitAct} = Qt::Action(this->tr('E&xit'), this); exitAct->setShortcuts([Qt::KeySequence(Qt::KeySequence::Quit())]); this->connect(exitAct, SIGNAL 'triggered()', this, SLOT 'close()'); this->{aboutAct} = Qt::Action(this->tr('&About'), this); this->connect(aboutAct, SIGNAL 'triggered()', this, SLOT 'about()'); this->{aboutQtAct} = Qt::Action(this->tr('About &Qt'), this); this->connect(aboutQtAct, SIGNAL 'triggered()', qApp, SLOT 'aboutQt()'); # [5] } # [5] sub createMenus { this->{fileMenu} = Qt::Menu(this->tr('&File'), this); fileMenu->addAction(openAct); fileMenu->addAction(clearAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); this->{helpMenu} = Qt::Menu(this->tr('&Help'), this); helpMenu->addAction(assistantAct); helpMenu->addSeparator(); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); menuBar()->addMenu(fileMenu); menuBar()->addMenu(helpMenu); } 1;