slot a segmentation

0

problem rozwioazany, dzeiki

jak to naprawic ?

0

Sory, ale nie pomogę, bo zapomniałem dziś mojej magicznej kuli. Z tego wielkiego fragmentu kodu i olbrzymiej ilości informacji jakie dałeś, trochę ciężko coś wywnioskować. Możesz po prostu i albo j dawać za duże i wychodzić poza zakres.

0

Ja strzelam, że i oraz j mają złę wartości i wychodzisz poza zakres tablicy.
Popraw tak (tak będzie bardziej poprawnie):

void MainWindow::zmiana()
{
    if (QPushButton* button = qobject_cast<QPushButton*>(sender()))
           button->setText(QString('X'));
}
0

jeśli 'i' oraz 'j' są polami klasy to po wykonaniu się pierwszych pętli będą one przechowywały wartości wykraczające poza wielkość tablicy. Odwoływanie się w ten sposób w slocie może być niebezpieczne bo ciężej jest kontrolować wartości tych pól. Nie lepiej przekazywać je przez argumenty lub nawet przekazać przez argument sam wskaźnik na button?

0

albo tak jak wyżej kolega pisał - czego nie przeczytałem wcześniej :) W sumie to nawet ładniejsze rozwiązanie.

0

dzieki

0

ale jaja ;)

na moje oko tu jest wszystko ok

moze sie jeszcze ktos wypowie, ja nie wiem

0

wrzuć gdzieś projekt i go udostępnij bo tak do niczego nie dojdziemy :]
poza tym tworzenie QPushButton'ów możesz wywołać w pętli nadrzędnej do tej co wywołujesz connect (przez co pozbywasz się jednej pętli).

0

trzeba bylo zmienic


 connect(tab[i][j],SIGNAL(clicked()), this, SLOT(close()));

na

 connect(&tab[i][j],SIGNAL(clicked()), this, SLOT(close())); 

myslalem ze to przejdzie domyslnie i pozniej nie zauwyzelem, dlaczego koniecznie adres tego ?

0

bo przechowujesz obiekty statycznie utworzone czyli musisz przekazać ich adresy. Na przyszłość wrzuć jeszcze deklarację klasy, bo z tego kodu co prawda można było to wywnioskować ale łatwiej byłoby z deklaracji klasy gdyby było widać co przechowuje dokładnie ta tablica (wskaźniki (QPushButton*) czy same obiekty (QPushButton) )

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0