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

question-closed Połączenie w QT5

Aruba Cloud - Virtual Private Server VPS
0 głosów
170 wizyt
pytanie zadane 9 czerwca 2016 w C i C++ przez aspoka Mądrala (5,290 p.)
zamknięte 10 czerwca 2016 przez aspoka

Witam, piszę sapera w QT5. Na razie mam tablice przycisków i chcę by po kliknięciu przycisku wyświetlił się na nim X. Gdy włączam program pojawia się komunikat: "QObject::connect: No such slot MojeOkno::onClick(i,j)"  Oczywiście program nie działa, ale okienko się pojawia.

Mój kod

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MojeOkno o;
    o.show();
    return a.exec();
}

mainwindow.h

#ifndef MOJEOKNO_H
#define MOJEOKNO_H

#include <QMainWindow>
#include <QPushButton>
#include <QMainWindow>
#include <QLabel>
#include "patch.h"

class MojeOkno : public QMainWindow
{
Q_OBJECT public:
    explicit MojeOkno(QWidget *parent = 0);
    QPushButton* button;
    QLabel* label1;
    QLabel* label2;
    QLabel* label3;
    QLabel* label4;
    QPushButton*** tab;
    Patch* p;
signals:
public slots:
    void onClick(int i, int j);
};
#endif // MOJEOKNO_H

mainwindow.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>

MojeOkno::MojeOkno(QWidget *parent) :    QMainWindow(parent)
{
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    setGeometry(100, 100, 400, 460);
    setWindowTitle("Saper");

    label1 = new QLabel("Bomby:", this);
    label1->setGeometry(20, 20, 80, 40);

    label2 = new QLabel("10", this);
    label2->setGeometry(120, 20, 80, 40);

    label3 = new QLabel("Czas:", this);
    label3->setGeometry(220, 20, 80, 40);

    label4 = new QLabel("0", this);
    label4->setGeometry(300, 20, 80, 40);

    tab = new QPushButton**[9];
    for(int i=0; i<9; i++)
    {
        tab[i] = new QPushButton*[9];
            for(int j=0; j<9; j++)
            {
                tab[i][j] = new QPushButton("", this);
                tab[i][j]->setGeometry(20+i*40, 80+j*40, 40, 40);
            }
    }

    //connect(tab[0][0], SIGNAL(clicked(bool)), this, SLOT(onClick(0,0)));
    for(int i=0; i<9; i++)  for(int j=0; j<9; j++)
        connect(tab[i][j], SIGNAL(clicked()), this, SLOT(onClick(i, j)));
}
void MojeOkno::onClick(int i, int j)
{
    tab[i][j]->setText("X");
}

W ostatnim pliku usuwam komentarz z 34 linijki i wrzucam 35 i 36 w komentarz pojawia się z kolei taki błąd: "QObject::connect: No such slot MojeOkno::onClick(0, 0)"

 

Ktoś ma pomysł dlaczego?

komentarz zamknięcia: Problem rozwiązany. Usunąć i napisać od zera w inny, poprawny  sposób.

Podobne pytania

0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 17 lipca 2018 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez amb00 Bywalec (2,000 p.)
0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Sidzej Użytkownik (850 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...