Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.140.255.150] |
|
Сообщ.
#1
,
|
|
|
Пусть создаю CPP и H файлы для глобальных переменных. По аналогии кода ниже всякие QFile, QString, QTextDocument и прочие работают нормально. А вот QPrinter не хочет. Как правильно записать этот объект? Много вариантов перепробовал: с указателями, скобками, без скобок, с параметрами в скобках. Исхода 2:
- либо не компилится (странная ошибка "переменная неизвестна", хотя, предлагается к автовводу; - либо компилируется, но сразу при старте ПО вылетает ошибка то ли "Segmentation fault", то ли что-то типа "BKTR". global_variables.cpp #include <QtWidgets> #include <QPrinter> QTextDocument g_qtDocument; QPrinter *g_qPrinter(); global_variables.h #include <QtWidgets> #include "QPrinter" extern QTextDocument g_qtDocument; extern QPrinter g_qPrinter; protocol.cpp #include "global_variables.h" #include <QTextDocument> //код с g_qPrinter. Добавлено @#include "QPrinter"@ - замена кавычек на <> ситуацию не исправляет. Если же написать не в глобальных переменных, а в функции "QPrinter qPrinter(QPrinter::PrinterResolution)" - все прекрасно пашет. Принтера физически в системе нет. |
Сообщ.
#2
,
|
|
|
Сообщ.
#3
,
|
|
|
Сообщ.
#4
,
|
|
|
Цитата Сергей85 @ global_variables.cpp #include <QtWidgets> #include <QPrinter> QTextDocument g_qtDocument; QPrinter *g_qPrinter(); Здесь, наверное, должно быть QPrinter g_qPrinter. В твоём случае у тебя объявлена функция, возвращающая указатель на QPrinter. |
Сообщ.
#5
,
|
|
|
Цитата Олег М @ Есть предложение разместить здесь именно реально рабочий код. Потому что ваш способ я уже пробовал. Если же написать не в глобальных переменных, а в функции "QPrinter qPrinterr(QPrinter::PrinterResolution)" - все прекрасно пашет. Принтера физически в системе нет. |
Сообщ.
#6
,
|
|
|
хм, насколько я понимаю, дело в банальном непонимании что такое указатели?
в ашнике пишем: class QPrinter; QPrinter *g_qPrinter = nullptr; в сишнике пишем: #include <QPrinter> g_qPrinter = new QPrinter (QPrinter::PrinterResolution); и пользуемся функциями, например: g_qPrinter->setOutputFormat(QPrinter::Pdfformat) |
Сообщ.
#7
,
|
|
|
Цитата _lcf_ @ Нет, дело не в этом. Почему глобальный QFile и прочие не требует New? Вот именно QPrinter'у это приспичило; хотя оба являются базовыми классами среды. Повторюсь, что если не использовать глобальную переменную, а локальную, в функции - все прекрасно работает и без этих выкрутасов с new. |
Сообщ.
#8
,
|
|
|
Закрыто за неактуальностью.
|