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

Qt incomplete class definition

Cloud VPS
0 głosów
933 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 (155,180 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ź 317 wizyt
pytanie zadane 9 kwietnia 2018 w C i C++ przez Undisputed Gaduła (3,040 p.)
0 głosów
1 odpowiedź 268 wizyt
pytanie zadane 20 września 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 1,254 wizyt
pytanie zadane 26 sierpnia 2015 w C i C++ przez Jakub Nowacki Początkujący (470 p.)

93,464 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,844 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

Kursy INF.02 i INF.03
...