Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

QT - błąd PRIVATE SLOTS

Ostatnio zmodyfikowano 2014-01-22 22:20
Autor Wiadomość
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.
P-102753
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?
P-102760
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:

C/C++
#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 // MAINWINDOW_H
P-102763
ShadowkhaN
» 2014-01-21 22:50:27
Spróbuj tak:

C/C++
#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 // MAINWINDOW_H [/cpp]
P-102768
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 :(
P-102773
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
P-102801
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 :)
P-102893
« 1 »
  Strona 1 z 1