Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 116 стр.

UptoLike

116
сокращения для пунктов меню. Вызовы методов setEnabled, setCheckable и setChecked устанавливают
доступность элементов меню и их исходные состояния. Вызовы методов addMenu прикрепляют
описанные ранее пункты меню; setWindowTitleустанавливает заголовок текущего окна.
Далее необходимо добавить описанным элементам меню обработчики с помощью системы слотов
и сигналов Qt. Для этого в конструкторе допишем следующие строки:
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
connect(openAction, SIGNAL(triggered()), this, SLOT(openFile()));
connect(m_backgroundAction, SIGNAL(toggled(bool)), m_view,
SLOT(setViewBackground(bool)));
connect(m_outlineAction, SIGNAL(toggled(bool)), m_view,
SLOT(setViewOutline(bool)));
connect(bkgGroup, SIGNAL(triggered(QAction*)), this,
SLOT(setWindowBackground(QAction*)));
Теперь необходимо описать соответствующие обработчики событий. Первым, в файле
“mainwindow.cpp” опишем стандартный диалог открытия svg-файлов:
void MainWindow::openFile(const QString &path)
{
QString fileName;
if (path.isNull())
fileName = QFileDialog::getOpenFileName(this, tr("Open SVG File"),
m_currentPath, "SVG files (*.svg *.svgz *.svg.gz)");
else
fileName = path;
if (!fileName.isEmpty()) {
QFile file(fileName);
if (!file.exists()) {
QMessageBox::critical(this,
tr("Open SVG File"),
tr("Could not open file %1'.").arg(fileName));
m_outlineAction->setEnabled(false);
m_backgroundAction->setEnabled(false);
return;
}
m_view->openFile(file);
m_currentPath = fileName;
setWindowTitle(tr("%1 - SVGViewer").arg(m_currentPath));
m_outlineAction->setEnabled(true);
m_backgroundAction->setEnabled(true);
resize(m_view->sizeHint() + QSize(80, 80 + menuBar()->height()));
}
}
Далее добавим выбор подложки.
void MainWindow::setWindowBackground(QAction *action) {
if (action == m_chessAction){
m_view->setBkgPaint(0);//chess
} else if(action == m_meegoAction){
m_view->setBkgPaint(1);//meego
}
}