crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QPrintPreviewDialog и векторные форматы
JuryS1806
  опции профиля:
сообщение 21.7.2010, 4:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Доброго времени суток !

Никак не соображу, как можно файлы, сохраненные в формате PS, EPS, EMF, PDF или SVG просматривать в QPrintPreviewDialog. Сама диалоговая карточка мне понравилась , только руссифицировать бы.

Так вот, хочу спросить, какой из этих векторных форматов лучше просматривать и как вообще его там открыть ?

Спасибо за помощь !
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 21.7.2010, 11:24
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата
SVG drawings can be rendered onto any QPaintDevice subclass

Смотри в сторону SVG Viewer Example и QSvgRenderer.

Цитата
только руссифицировать бы.

Попробуй так:
QTranslator qtTranslator;
     qtTranslator.load("qt_" + QLocale::system().name(),
             QLibraryInfo::location(QLibraryInfo::TranslationsPath));
     app.installTranslator(&qtTranslator);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 3.8.2010, 14:13
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Долгое время не мог открыть сайт форума. Проблему решил , может быть кому понадобится:

void MainWindow::printSlot() // Окно предварительного просмотра
{
    if (!AnyDocument()) return;

if (myViewMode<3)
    {
    //Создаю предварительный чертеж SVG
    MDIWindow* w = (MDIWindow*)stWs->activeWindow();
    if ( w )
        w->dump(myTempPath+"print-preview.svg");
    else return;

    QFile file(myTempPath+"print-preview.svg");
    if (!file.exists())
    { QMessageBox::warning(this,trUtf8("Печать"),trUtf8("Не удалось создать файл предварительного просмотра\n"
                                                        "для печати.")); return; }

    QPrinter printer(QPrinter::HighResolution);
    QPrintPreviewDialog preview(&printer, this);
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),
            this, SLOT(printDocument(QPrinter *)));
    preview.exec();
    file.remove();
    }
else
{
    QMessageBox::information(this,trUtf8("Печать"),trUtf8("Печать текстурированных объектов\n"
                                                          "пока не доступна."));
}
}

void MainWindow::printDocument(QPrinter *printer)
{
    QSvgRenderer render;
    render.load(myTempPath+"print-preview.svg");

    QRect sizeF; //Размер бумаги
    sizeF = printer->pageRect();

    QRect sizeSVG; //Разрешение SVG
    sizeSVG = render.viewBox();

    int width,height,x,y;
    double myCoef;

        width = sizeF.width();
        myCoef = (double)width / (double)sizeSVG.width();
        height = floor((double)sizeSVG.height()*myCoef);

//Теперь дополнительная проверка в зависимости от размера изображения
    if (height > sizeF.height()) //Изображение не убралось по высоте
    {
        int theight = height;
        height = sizeF.height();
        myCoef = (double)theight / (double)height;
        width = floor((double)width/myCoef);
    }

    if (width > sizeF.width()) //Изображение не убралось по ширине
    {
        int twidth = width;
        width = sizeF.width();
        myCoef = (double)twidth / (double)width;
        height = floor((double)height/myCoef);
    }


        x = floor((sizeF.width()  - width) / 2);
        y = floor((sizeF.height() - height) / 2);

    QPainter painter;
    painter.begin(printer);
    render.render(&painter,QRect(x,y,width,height));
}


Хотя скажу сразу, что QtSVG -render тормозно работает. Я сейчас прикручиваю напрямую GL виджет к рисовальщику окна печати, без темпового файла .svg.

Если кому будет интересно, пишите, приведу пример.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.1.2025, 0:59