f
fryn322 августа 2018 г. 14:10

Собрать static QWT application

Qt, static, Qwt

Установил статический QT по видео . Установил QWT по видео .
В файле C:\qwt-6.1.3\qwtconfig.pri закоменчена строка:

######################################################################
# Build the static/shared libraries.
# If QwtDll is enabled, a shared library is built, otherwise
# it will be a static library.
######################################################################

#QWT_CONFIG           += QwtDll

Создаю маленький проект(код ниже). Динамически все собирается и запускается. Статически собирается, но вылетает ошибка:

QWidget: Must construct a QApplication before a QWidget

Ошибка при запуске статического приложения


Путь к статик Qt: C:\Qt\Static5111\5.11.1_Static Путь к Qwt: C:\qwt-6.1.3 Проект: qwtTemp.pro

QT       += core gui widgets

TARGET = qwtTemp
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS


CONFIG += c++11

SOURCES += \
        main.cpp \
        widget.cpp

HEADERS += \
        widget.h


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

CONFIG += qwt

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <qwt_plot.h>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

    QwtPlot *p;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    p = new QwtPlot();
}

Widget::~Widget()
{
    delete p;
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    w.p->show();
    return a.exec();
}
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

6
Evgenii Legotckoi
  • 27 августа 2018 г. 13:52

Попробуйте так исправить

#include <QApplication>
#include "widget.h"

// Won't ever be a dangling pointer.
QPointer<Widget> w;

int main(int argc, char ** argv)
{
  QApplication app(argc, argv);
  Widget w_("Hello, world!");
  w.reset(&w_);
  w->show();
  return app.exec();
}
    f
    • 27 августа 2018 г. 14:03
    • (ред.)

    удалено

      f
      • 27 августа 2018 г. 14:03

      у QPointer нет метода reset.

        Evgenii Legotckoi
        • 27 августа 2018 г. 14:10

        Может тогда QScopedPointer?

          f
          • 27 августа 2018 г. 14:12
          #include <QApplication>
          #include <QPointer>
          #include "widget.h"
          
          QPointer<Widget> w;
          
          int main(int argc, char *argv[])
          {
              QApplication a(argc, argv);
              Widget w_;
              w = (&w_);
              w.data()->show();
              return a.exec();
          }

          // так запустил, ничего не изменилось
            f
            • 27 августа 2018 г. 14:15
            #include <QApplication>
            #include <QPointer>
            #include "widget.h"
            
            QScopedPointer<Widget> w;
            
            int main(int argc, char *argv[])
            {
                QApplication a(argc, argv);
                Widget w_;
                w.reset(&w_);
                w.data()->show();
                return a.exec();
            }
            // запустил так, тоже самое.
            // и везде предупреждение такое:
            // C:\Users\User_ggsk_1\Documents\qwtTemp\main.cpp:5: предупреждение: no previous extern declaration for non-static variable 'w'

              Комментарии

              Только авторизованные пользователи могут публиковать комментарии.
              Пожалуйста, авторизуйтесь или зарегистрируйтесь
              Ua

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

              • Результат:84баллов,
              • Очки рейтинга4
              Ua

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

              • Результат:42баллов,
              • Очки рейтинга-8
              ОК

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

              • Результат:47баллов,
              • Очки рейтинга-6
              Последние комментарии
              ИМ
              Игорь Максимов22 ноября 2024 г. 21:51
              Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
              Evgenii Legotckoi
              Evgenii Legotckoi31 октября 2024 г. 23:37
              Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
              A
              ALO1ZE19 октября 2024 г. 17:19
              Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
              ИМ
              Игорь Максимов5 октября 2024 г. 16:51
              Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
              d
              dblas55 июля 2024 г. 20:02
              QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
              Сейчас обсуждают на форуме
              f
              firstlunoxod15 февраля 2025 г. 13:46
              Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
              Дмитрий
              Дмитрий3 февраля 2025 г. 16:24
              Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
              NW
              Nayo Wai30 января 2025 г. 19:22
              не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
              n
              nkly3 января 2025 г. 12:52
              Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
              M
              Marsel17 августа 2023 г. 0:26
              OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

              Следите за нами в социальных сетях