Составители:
Рубрика:
117
Эта функция в зависимости от действия будет вызывать с соответствующим параметром метод
setBkgPaint класса SvgView.
9.5.3.5. Основная часть приложения
Итак, перейдём к основной части приложения. Главная функция (файл “main.cpp
”) будет
выглядеть следующим образом:
int main(int argc, char **argv)
{
Q_INIT_RESOURCE(res);
QApplication app(argc, argv);
MainWindow window;
if (argc == 2)
window.openFile(argv[1]);
else
window.openFile(":/files/images/test.svg");
window.show();
return app.exec();
}
Вызов макроса Q_INIT_RESOURCES инициализирует ресурсы; ветвление “if (argc == 2)”
позволяет запускать программу из консоли, с указанием в качестве параметра файла, который
необходимо открыть. По умолчанию используется хранящийся в ресурсах svg-файл
“:/files/images/test.svg
” (“:/” означает ссылку на объект внутри ресурсного файла).
В файле svgview.cpp опишем конструктор виджета:
SvgView::SvgView(QWidget *parent)
: QGraphicsView(parent)
, m_svgItem(0)
, m_backgroundItem(0)
, m_outlineItem(0)
{
setScene(new QGraphicsScene(this));
setViewportUpdateMode(FullViewportUpdate);
setBkgPaint(0);//set chess background
}
Наш виджет наследуется от класса QGraphicsView (смотреть заголовочный файл “svgview.h” в
приложении к лабораторной работе), таким образом он наследует методы setScene — который
прикрепляет новую графическую сцену к виджету, setViewportUpdateMode, устанавливающий способ
обновления видимой области и прочие (полное описание методов можно найти в документации к Qt).
Вызов метода setBkgPaint позволяет установить подложку по умолчанию. Он будет иметь следующий
вид:
void SvgView::setBkgPaint(int idx) {
QPixmap tilePixmap(64, 64);
switch (idx) {
case 0 : {//chess
tilePixmap.fill(Qt::white);
QPainter tilePainter(&tilePixmap);
QColor color(220, 220, 220);
tilePainter.fillRect(0, 0, 32, 32, color);
tilePainter.fillRect(32, 32, 32, 32, color);
tilePainter.end();
break;
}
case 1 : {//meego
Страницы
- « первая
- ‹ предыдущая
- …
- 115
- 116
- 117
- 118
- 119
- …
- следующая ›
- последняя »
