Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
IF
27 декабря 2018 г. 22:06

Qprint document word

Хочу реализовать, пока что только для себя прогрмму, которая распечатывает много word документов ( например 200 ). Средствами windoes -это выполняется криво и по 15 штук за раз максимум. главный вопрос, как заставить Qprint печатать word документы ? ( просто у word , как говорят на форумах , сам отвечает за свою печать. Что посоветуете ?

7

Добрый день.

Именно распечатывать, на принтере? Qt может использовать QPrinterDialog и ещё ряд классов, но в итоге он всё равно обращается к подсистеме ОС, которая отвечает за работу принтеров.

Или вы имели ввиду что-то другое?

0
IF

Да, я имел ввиду чуть другое.Лучше привиду пример.

У меня есть документ "1.docx", стоит задача распечатать его на принтере.

Почему такая задача. Потому что файлов может быть много, прям очень много и их надо очередью пускать на принтер. Вот и вся задача.

В итоге мне надо разобраться, как распечатать средствами Qt на принетр ( выставляя определённый принетр ) и всё.

0
IF

Просто люблю я С++ и Qt и как то не кросс платформенное писать приложение не очень.

0
IF

Немного выводов

1.Для работы с word документами нужна библиотека #include , она в свою очередь есть только на Windows Ссылка на документацию . Так что всякая кросс платформенная печать word документов под большим крестом!

На всякий оставлю кусок кода, который будет печатать докуметн word ( по мнению одного из Забугорских формучан )

QAxObject *word;
QAxObject *doc;
word = new QAxObject("Word.Application", this);
word->setProperty("DisplayAlerts", false);
word->setProperty("Visible", true);
doc = word->querySubObject("Documents");
doc->dynamicCall("Open(QVariant)", "hello_world.docx");
0

В приведенном Вами куске кода нет ничего, связанного с печатью документа. Это способ работы с Microsoft Office, используя ActiveX. Про печать надо изучать документацию . Еще рекомендую добавить проверки, чтобы избежать вылетов:

QAxObject* word = new QAxObject("Word.Application", this);
if(word) {
    word->setProperty("DisplayAlerts", 0);
    word->setProperty("Visible", true);
    QAxObject* docs = word->querySubObject("Documents");
    if(docs) {
        QAxObject* doc = docs->dynamicCall("Open(QString&)", "hello_world.docx");
        if(doc) {
            // .. далее печать и т.д.
            // ...
            delete doc;
        }
        docs->dynamicCall("Close()");
        delete docs;
    }
    word->dynamicCall("Quit()");
    delete word;
}
0
IF

Сильно извеняюсь, строчка для печати как раз

doc->querySubObject("PrintOut()");

Просто не заметрил, и я думаю вы правы по поводу ActiveX

0

Ну и поскольку используется ActiveX, о кроссплатформенности уже речи не идет.

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
A
22 января 2019 г. 21:22
Allyonz

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
A
22 января 2019 г. 14:15
Alex

Qt - Тест 001. Сигналы и слоты

  • Результат:89баллов,
  • Очки рейтинга6
IO
20 января 2019 г. 18:39
Ivan Otreshko

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

  • Результат:0баллов,
  • Очки рейтинга-10
Последние комментарии
22 января 2019 г. 13:17
Евгений Легоцкой

Создайте тогда тему здесь на форуме в разделе Qt с выкладками кода и вашими попытками внедрения делегата, позже гляну или может кто-то ещё глянет из опытных пользователей.
I
22 января 2019 г. 13:13
IscanderChe

Не проще тогда использовать сразу кастомный делегат с чекбоксом? Я попробовал, но там засада в том, что чекбокс показывается только при щелчке на ячейку, а дефолтно показывается значение. Как ...
22 января 2019 г. 12:15
Евгений Легоцкой

Если будет не приемлемо потом, то тогда через кастомный Item Delegate нужно будет перерисовать ячейки в той колонке.
I
22 января 2019 г. 12:09
IscanderChe

Получилось приемлемо. Спасибо!Нюанс только в том, что поле рядом с чекбоксом не пропадает, оно просто пустое, что видно при выделении ячейки. Но этого достаточно.
22 января 2019 г. 11:50
Евгений Легоцкой

Переопределить метод data для той колонки и роли Qt::DisplayRole, чтобы в том случае возвращался QVariant() я так думаю... Но возможно, что у вас там будут нюансы, если вы туда чекбокс за...
Сейчас обсуждают на форуме
23 января 2019 г. 7:54
Михаиллл

Зарание спасибо.А еще на эту тему можно будет сделать статью. Это контент будет уникальным.
23 января 2019 г. 7:37
Евгений Легоцкой

Hello. Maybe the English will be better for you? I think russian is not native language for you, or did I mistake? Did I undesrtood rightly, that you mean this documentation ( ...
I
22 января 2019 г. 13:45
IscanderChe

Всем добрый день. Суть задачи: надо, чтобы в одной из колонок QTableView вместо хранимого в QSqlTableModel значения выводился чекбокс и при смене состояния чекбокса значения в базе тоже ...
M
22 января 2019 г. 13:15
Max-P85

Евгений, огромное спасибо, все работает!
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы