Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
f
22 августа 2018 г. 8: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

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

#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();
}
0
f
  • 27 августа 2018 г. 8:03
  • (ред.)

удалено

0
f

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

0

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

0
f
#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();
}

// так запустил, ничего не изменилось
0
f
#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'
0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
МБ
21 апреля 2019 г. 9:40
Моисей Бушуев

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

  • Результат:0баллов,
  • Очки рейтинга-10
AA
17 апреля 2019 г. 19:40
Anton Ablin

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

  • Результат:73баллов,
  • Очки рейтинга1
E
17 апреля 2019 г. 18:16
Evgeny

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

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

Через метод setIcon table.horizontalHeaderItem(0).setIcon("qrc://path/to/icon.png")
21 апреля 2019 г. 15:48
Евгений Легоцкой

Добрый день! Спасибо за комментарий. Там действительно лучше будет сделать с инициализацией по умолчанию.
U
18 апреля 2019 г. 15:37
Unreal_man

А как иконку в хедер задать?
u
18 апреля 2019 г. 2:15
uaa

доброго времени,большое спасибо за пример для начинающего)при адаптации к своему проекту столкнулся с таким ньансом:в vepolyline.h в 47 строке нужна инициализация по умолчанию: int m_pointF...
E
11 апреля 2019 г. 12:49
Evgeny

Спасибо за ответ) У меня компоновщик на нее ругался просто. Оказалось, просто забыл Q_OBJECT в начале класса указать.
Сейчас обсуждают на форуме
23 апреля 2019 г. 18:39
BlinCT

Вопрос закрыт) проблема найдена
21 апреля 2019 г. 16:16
Евгений Легоцкой

Приветствую Нужно сохранять где-то выбранное значение, а потом восстанавливать его. Или использовать QSettings или добавить метод open(), в который передавать начальные значения для того...
R
19 апреля 2019 г. 9:55
RED_Spider

мені важко це зараз навіть перевірити, тому що знайшов коміт, це ще було в 2016 році, і цей код не буде працювати коректно зараз, єдине скажу що це були QThread
i
17 апреля 2019 г. 15:03
ilya.guzikov

BlinCT, на стороне ++ это делать необходимо так как в qml при использовании функции append происходит перерисовка всех точек лини(как я понимаю) и из-за этого при использовании больших массиво...
Присоединяйтесь к нам в социальных сетях

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