• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt incomplete class definition

Object Storage Arubacloud
0 głosów
546 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez Lyokoheros Początkujący (340 p.)

Mam dziwny problem, robie projekt w używając Qt creatora, jednak część która wcześniej (to jest przed przeniesieniem się z Windowsa na Linuxa) doskonale działała nagle zaczęła zwracać dziwne błędy.

Tak wygląda plik nagłówkowy mojej klasy(MyWidget.h):

#include <QWidget>
#include <QLabel>
#include <QString>
#include <QLineEdit>
#include <QPushButton>
#include <QSpinBox>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QVector2D>
#include <solver.h>

class MyWidget: public QWidget // base class has incomplete type
{
    Q_OBJECT // incomplete result type 'QString' in function definition // calling 'tr' with incomplete type 'QString'
public:
    MyWidget();

private slots:
    void getParameters(int n, bool interval);

    QVector<QString> prepareDoubles(QVector<QLineEdit*> input); // use of undeclared identifier 'QLineEdit' // expected expression


private:
    QGridLayout* parametersWindow; // unknown type name 'QGridLayout'
    QVBoxLayout* degreeWindow; // unknown type name 'QVBoxLayout'
    QSpinBox* degree; // unknown type name 'QSpinBox'
    QPushButton* button; // unknown type name 'QPushButton'
    QPushButton* buttonFP; // unknown type name 'QPushButton'
    QPushButton* buttonIN; // unknown type name 'QPushButton'
    QVector<QLineEdit*> parameters; // unknown type name 'QLineEdit' // expected expression
    Solver* solver;
};

#endif // MYWIDGET_H

Solver to inna moja klasa, jako komentarze dodałem błędy jakie się pojawiają w danych linijkach. Nie mam pojęcia skąd się one biorą, skoro przecież wszystkie ich biblioteki są pododawane, a wcześniej ten sam kod działał bez zarzutów. Tu link do projektu na githubie, który działałał bez zarzutów.

Jedyne co się zmieniło to skonfigurowanie środowiska i załączenie odpowiednich bibliotek dla arytmetyki przedziałowej (Interval.h), a co za tym idzie dodanie do pliku .pro następujących linijek:

LIBS +=\
    -L"/usr/local/boost/boost_1_55_0" -lBoost
INCLUDEPATH +=\
    /usr/local/boost/boost_1_55_0

Oraz rozpoczęcie implementacji (od poprawy pliku nagłówkowego) klasy SolverInterval.

komentarz 17 listopada 2020 przez Lyokoheros Początkujący (340 p.)

Dobra, znalazłem rozwiązanie - problemem okazało się być to, że należało zainstalować starszego clanga, z którego korzysta Qt Creator. Tu instrukcja na podstawie której to zrobiłem.

1 odpowiedź

0 głosów
odpowiedź 16 listopada 2020 przez tangarr Mędrzec (154,780 p.)
Boost i Qt mają konflikt mechanizmu sygnałów i slotów. Być może to powoduje problem. Spójrz tutaj https://doc.qt.io/qt-5/signalsandslots.html#using-qt-with-3rd-party-signals-and-slots
komentarz 16 listopada 2020 przez Lyokoheros Początkujący (340 p.)
edycja 16 listopada 2020 przez Lyokoheros

Hm... to raczej nie to, a przynajmniej nie tylko to. Zgodnie z podanym linkiem próbowałem dodać

CONFIG += no_keywords

Ale niestety nic to nie pomogło. Spróbowałem też przywrócić bezpośrednio do formy z gita (która wcześniej działała), projekt musiał się na nowo skonfigurować, bo wersja Qt Creatora nie była dokładnie taka sama (obecnie mam 4.11, a na gicie jest... 4.13.1 - to znaczy takie wersje widnieją w pliku .pro.user).

 


 

Podobne pytania

0 głosów
1 odpowiedź 237 wizyt
pytanie zadane 9 kwietnia 2018 w C i C++ przez Undisputed Gaduła (3,040 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 20 września 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 1,035 wizyt
pytanie zadane 26 sierpnia 2015 w C i C++ przez Jakub Nowacki Początkujący (470 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...