На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Объект QPrinter не получается сделать глобальным. , Qt Creator v,.3.5.x.
    Пусть создаю CPP и H файлы для глобальных переменных. По аналогии кода ниже всякие QFile, QString, QTextDocument и прочие работают нормально. А вот QPrinter не хочет. Как правильно записать этот объект? Много вариантов перепробовал: с указателями, скобками, без скобок, с параметрами в скобках. Исхода 2:
    - либо не компилится (странная ошибка "переменная неизвестна", хотя, предлагается к автовводу;
    - либо компилируется, но сразу при старте ПО вылетает ошибка то ли "Segmentation fault", то ли что-то типа "BKTR".

    ExpandedWrap disabled
      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)" - все прекрасно пашет. Принтера физически в системе нет.
    Сообщение отредактировано: Сергей85 -
      ////
      Прикреплённая картинка
      Прикреплённая картинка
        ///
        Прикреплённая картинка
        Прикреплённая картинка
          Цитата Сергей85 @
          global_variables.cpp
             #include <QtWidgets>
             #include <QPrinter>
           
              QTextDocument g_qtDocument;
              QPrinter *g_qPrinter();


          Здесь, наверное, должно быть QPrinter g_qPrinter. В твоём случае у тебя объявлена функция, возвращающая указатель на QPrinter.
            Цитата Олег М @

            Есть предложение разместить здесь именно реально рабочий код. Потому что ваш способ я уже пробовал. Если же написать не в глобальных переменных, а в функции "QPrinter qPrinterr(QPrinter::PrinterResolution)" - все прекрасно пашет. Принтера физически в системе нет.
              хм, насколько я понимаю, дело в банальном непонимании что такое указатели? :rolleyes:
              в ашнике пишем:
              ExpandedWrap disabled
                class QPrinter;
                QPrinter *g_qPrinter = nullptr;

              в сишнике пишем:
              ExpandedWrap disabled
                #include <QPrinter>
                g_qPrinter = new QPrinter (QPrinter::PrinterResolution);

              и пользуемся функциями, например:
              ExpandedWrap disabled
                g_qPrinter->setOutputFormat(QPrinter::Pdfformat)
              Сообщение отредактировано: _lcf_ -
                Цитата _lcf_ @

                Нет, дело не в этом.

                Почему глобальный QFile и прочие не требует New? Вот именно QPrinter'у это приспичило; хотя оба являются базовыми классами среды.

                Повторюсь, что если не использовать глобальную переменную, а локальную, в функции - все прекрасно работает и без этих выкрутасов с new.
                  Закрыто за неактуальностью.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0567 ]   [ 20 queries used ]   [ Generated: 19.03.24, 02:53 GMT ]