Пример создания блокнота не работает

148
05 октября 2019, 03:30

Пытаюсь запустить пример создания блокнота из туториалов Qt (https://doc.qt.io/qt-5/qtwidgets-tutorials-notepad-example.html) без QtCreator.

В конструкторе

Notepad::Notepad(QWidget* parent) :
        QMainWindow(parent),
        ui(new Ui::Notepad) {
    ui->setupUi(this);
    this->setCentralWidget(ui->textEdit);
    connect(ui->actionNew, &QAction::triggered, this, &Notepad::newDocument);
    connect(ui->actionOpen, &QAction::triggered, this, &Notepad::open);
    connect(ui->actionSave, &QAction::triggered, this, &Notepad::save);
    connect(ui->actionSave_as, &QAction::triggered, this, &Notepad::saveAs);
    connect(ui->actionPrint, &QAction::triggered, this, &Notepad::print);
    connect(ui->actionExit, &QAction::triggered, this, &Notepad::exit);
    connect(ui->actionCopy, &QAction::triggered, this, &Notepad::copy);
    connect(ui->actionCut, &QAction::triggered, this, &Notepad::cut);
    connect(ui->actionPaste, &QAction::triggered, this, &Notepad::paste);
    connect(ui->actionUndo, &QAction::triggered, this, &Notepad::undo);
    connect(ui->actionRedo, &QAction::triggered, this, &Notepad::redo);
    connect(ui->actionFont, &QAction::triggered, this, &Notepad::selectFont);
    connect(ui->actionBold, &QAction::triggered, this, &Notepad::setFontBold);
    connect(ui->actionUnderline, &QAction::triggered, this, &Notepad::setFontUnderline);
    connect(ui->actionItalic, &QAction::triggered, this, &Notepad::setFontItalic);
    connect(ui->actionAbout, &QAction::triggered, this, &Notepad::about);
// Disable menu actions for unavailable features
#if !QT_CONFIG(printer)
    ui->actionPrint->setEnabled(false);
#endif
#if !QT_CONFIG(clipboard)
    ui->actionCut->setEnabled(false);
    ui->actionCopy->setEnabled(false);
    ui->actionPaste->setEnabled(false);
#endif
}

в макросе

// Disable menu actions for unavailable features
#if !QT_CONFIG(printer)
    ui->actionPrint->setEnabled(false);
#endif

получаю

error: division by zero in #if !QT_CONFIG(printer)

Судя по всему, это связано с тем, что следующая цепочка включений не срабатывает

#if defined(QT_PRINTSUPPORT_LIB)
#include <QtPrintSupport/qtprintsupportglobal.h>
#if QT_CONFIG(printer)
#if QT_CONFIG(printdialog)
#include <QPrintDialog>
#endif // QT_CONFIG(printdialog)
#include <QPrinter>
#endif // QT_CONFIG(printer)
#endif // QT_PRINTSUPPORT_LIB

Как можно исправить пример, чтобы работало без установки библиотеки для печати (QT_PRINTSUPPORT_LIB)?

Answer 1

В файле notepad.pro нужно закоментировать строчку где добавляется модуль QPrintSupport, вот так:

# qtHaveModule(printsupport): QT += printsupport

После этого макрос #if defined (QT_PRINTSUPPORT_LIB) перестанет выполнятся и все что связано с печатью отключится. Это если вы ничего в примере не меняли конечно.

READ ALSO
Подсчет одинаковых символов в строке

Подсчет одинаковых символов в строке

Вроде все работает, но по условию препода символы и верхнего регистра должны быть приняты как одинаковы, то есть "А"=="а"Как можно это реализовать?

109
_beginthreadex - дождаться завершения потока

_beginthreadex - дождаться завершения потока

Для выполнение определённой задачи пришлось прибегнуть к созданию дополнительного потокаНовый поток я создаю в оконном приложении

139
Qt 4.8.2. Как собрать исполняемый файл

Qt 4.8.2. Как собрать исполняемый файл

Создал проект Desctop-калькулятор, написал код, ошибок при компиляции не выдает, из qtcreator запускается, работает нормальноКогда запускаю файл...

137
Отдельный вывод букв, цифр, и спец символов

Отдельный вывод букв, цифр, и спец символов

Задача состоит в том, что бы программа принимала строку, и по отдельности выводила в разные строки её буквы(абвгд и тд), цифры(1234) и спец символы(*,/,+,-...

93