Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2013, 19:45   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию Печать текста

Входе создания проекта возник такой вопрос.
Программа должна распечатывать текст, но почему-то урезает текст!
Вот код программы:
Код:
void Printer::draw(QPaintDevice * ppd, const QString & str, const QFont & font, QColor colorText, QColor colorBase) {
    QPainter painter(ppd);
    QRect r(painter.viewport());

    qDebug() << str;
    painter.setPen(colorText);
    painter.setBrush(colorBase);
    painter.setFont(font);
    painter.drawText(r, Qt::AlignLeft, str);
}
Например, есть строка: АБВГДЕЁЖЗИЙКЛМН(размер шрифта 72).
Принтер напечатает на листок: АБВГДЕЁЖЗИ.
А остальной текст урезан.
Объясните пожалуйста почему!!!
"Реальность воображаема, а воображаемое - реально" В. Соло

Последний раз редактировалось ser70; 06.10.2013 в 20:09.
ser70 вне форума Ответить с цитированием
Старый 06.10.2013, 22:12   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

размер чего-то там увеличь
виджет не будет сам расширяться под твой текст.
rrrFer вне форума Ответить с цитированием
Старый 06.10.2013, 22:21   #3
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Короче за место умных речей наших все уважаемых профессионалов программирования вот код:
Код:
void Printer::draw(QPaintDevice * ppd, const QString & str, const QFont & font, QColor colorText, QColor colorBase) {
    QPainter painter(ppd);
    QRect r(painter.viewport());
    QFontMetrics fm(font);

    int width_font = 0;

    QString all_text = str;

    for(int i = 0; i < all_text.size(); i++)
        if(all_text.at(i) != '\n') {
            width_font += fm.width(all_text.at(i));
            qDebug() << "r.width() = " << r.width() << "width_font = " << width_font;
            if(r.width() < width_font) {
                width_font = 0;
                width_font += fm.width(all_text.at(i));
                all_text.insert(i - 1, QString("\n"));
                i += 2;
            }
        }

    qDebug() << "++++++++++++++++++++++++++++++++++++++++++++++++++";
    qDebug() << all_text;

    painter.setPen(colorText);
    painter.setBrush(colorBase);
    painter.setFont(font);
    painter.drawText(r, Qt::AlignLeft, all_text);
}
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBScript Печать текста на принтер Stilet Общие вопросы по программированию, компьютерный форум 6 17.01.2013 23:36
Печать 1,5 страницы набранного текста Ципихович Эндрю Microsoft Office Word 4 16.07.2012 17:50
Печать текста в Delphi Kreadlling Общие вопросы Delphi 1 05.04.2012 14:13
Печать текста с отступами(margins) roperd Общие вопросы Delphi 2 12.10.2011 08:46
Печать текста на принтере Terazoid Общие вопросы Delphi 11 10.10.2010 15:23