Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
Jan. 1, 2019, 5:25 p.m.

Как изменить размер шрифта и шрифт при печати

qt, font, print, шрифт, Печать

Здравствуйте. Скажите пожалуйста, как изменть шрифт и его размер при печати. Пробовал так, не работает:

void MainWindow::PrintDocument(QString &TextForPrint) //PrintDocument
{
    QPrinter MyPrinter;
    QPrintDialog *PrinterDialog = new QPrintDialog(&MyPrinter);
    PrinterDialog->setWindowTitle("Печать");
    QFont FontForPrint;
    FontForPrint.setPointSize(22);
    //PrinterDialog->setFont(FontForPrint);
    if (PrinterDialog->exec())
    {
        QPainter MyPainter;
        MyPainter.begin(&MyPrinter);
        MyPainter.drawText(100, 100, 400, 400, Qt::AlignLeft|Qt::AlignTop, TextForPrint);
        MyPainter.setFont(FontForPrint);
        MyPainter.end();
    }
}
1

Добрый день!

Метод setFamily используется для установки того, какой шрифт использовать. setPoiintSize также используется для установки размера шрифта.

Что касается того, что не работает, так проблема в том, что вы сначала отрисовываете текст, а потом уже меняете его шрифт. Нарушена последовательность вызова методов.

Так должно быть

if (PrinterDialog->exec())
{
    QPainter MyPainter;
    MyPainter.begin(&MyPrinter);
    MyPainter.setFont(FontForPrint);
    MyPainter.drawText(100, 100, 400, 400, Qt::AlignLeft|Qt::AlignTop, TextForPrint);
    MyPainter.end();
}
1

Comments

Only authorized users can post comments.
Please, Log in or Sign up
v
Jan. 17, 2019, 11:51 a.m.
vitalir12

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:20points,
  • Rating points-10
v
Jan. 17, 2019, 11:49 a.m.
vitalir12

C++ - Test 002. Constants

  • Result:50points,
  • Rating points-4
v
Jan. 17, 2019, 11:13 a.m.
vitalir12

C++ - Тест 003. Условия и циклы

  • Result:28points,
  • Rating points-10
Last comments
I
Jan. 16, 2019, 8:06 a.m.
IscanderChe

Заработало. Забыл model->select(); вписать.
I
Jan. 16, 2019, 8:02 a.m.
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
Jan. 16, 2019, 7:51 a.m.
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
Jan. 16, 2019, 7:43 a.m.
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Now discuss on the forum
Jan. 18, 2019, 11:26 a.m.
nayk1982

Для Desktop делал так: void pause(int ms){ QTimer timer; timer.setInterval( qBound(1, ms, 3600000) ); timer.setSingleShot(true); QEventLoop loop; QObject::connect(&...
Jan. 17, 2019, 12:01 p.m.
Алексей Внуков

у меня просто есть отдельное поле с чекбоксамими какие колонки нужно отображать CheckBox { id: checkBox text: qsTr("some text") checked: true onC...
Jan. 15, 2019, 4:53 p.m.
Михаиллл

Спасибо, заработало.Но выдало обычный текст без форатирования HTML.Придется искать дальше
Jan. 15, 2019, 12:52 p.m.
BlinCT

Я же вам выше написал CLion умеет работать с ремоут машинами. И Qt так же собирает.
Join us in social networks

For registered users on the site there is a minimum amount of advertising