QT - błąd PRIVATE SLOTS
Ostatnio zmodyfikowano 2014-01-22 22:20
Hufsa Temat założony przez niniejszego użytkownika |
QT - błąd PRIVATE SLOTS » 2014-01-21 21:31:46 Zaczynam przygodę z biblioteką Qt i po wielu wielu walkach z kompilatorem napotkałem inny błąd prawdopodobnie Q_OBJECT
Wszystko było dobrze do momentu gdy zadeklarowałem w pliku nagłówkowym coś takiego:
private slots: void liczba();
Debugger znalazł błąd w pliku moc.mainwindow.cpp : "undefined reference to MainWindow::liczba()" Kod wiersza:
case 0: _t->liczba();
Wpadłem na trop, że chodzi tu o przepuszczenie nagłówków przez moc.exe Na stronie http://qt-project.org/doc/qt-5.0/qtdoc/moc.html niby pisze co i jak, ale nie mogę sobie z tym poradzić...
Może ktoś lepiej wpadnie na trop (rozdział: Writing Make Rules for Invoking moc). Bardzo proszę o pomoc. |
|
ShadowkhaN |
» 2014-01-21 22:07:32 Możesz udostępnić więcej kodu? Bo ciężko z tego coś konkretnie wywnioskować :/ Używasz Qt Creatora? |
|
Hufsa Temat założony przez niniejszego użytkownika |
» 2014-01-21 22:31:15 Tak. To Qt Creator. Dodałem tylko private slots i funkcję. Cały mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow( QWidget * parent = 0 ); ~MainWindow(); private: Ui::MainWindow * ui; private slots: void liczba(); };
#endif
|
|
ShadowkhaN |
» 2014-01-21 22:50:27 Spróbuj tak: #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); private: Ui::MainWindow * ui; private slots: void liczba(); };
#endif
|
|
Hufsa Temat założony przez niniejszego użytkownika |
» 2014-01-21 22:56:59 Niestety... Jeszcze więcej błędów. :(
Wydaje mi się, że po prostu najpierw trzeba przepuścić nagłówek przez moc, lecz niestety nie daje rady tego zrobić.
Gdzieś na forum znalazłem taką poradę:
"Ręcznie w katalogu ze źródłami wykonać komendę (w cmd): moc header.h -o header.moc (oczywiście zamiast header nazwa naszego nagłówka), a następnie do cpp odpowiadająmu nagłówki dodać: #include “header.moc”."
Porada czytając stronę, którą podałem wcześniej wydaje się dobra, lecz nie wiem jak wskazówkę wdrożyć w życie :(
|
|
ShadowkhaN |
» 2014-01-22 09:57:42 Skoro "Debugger znalazł błąd w pliku moc.mainwindow.cpp : "undefined reference to MainWindow::liczba()" to podaj kod z pliku .cpp |
|
Hufsa Temat założony przez niniejszego użytkownika |
» 2014-01-22 22:20:09 PROBLEM ROZWIĄZANY. Doszukując się błędu poza kodem błąd znalazł się w pliku cpp... Okazało się, że mam źle wyskrobaną funkcję.
Dziękuję koledze za naprowadzenie na kod.cpp :) |
|
« 1 » |