QTableWidget setItem sygnał nie działa

0

Mam w ten sam sposób zrobioną obsługę labela, a w przypadku tabeli nie działa. Wie ktoś co może być nie tak?

mainwindow.cpp

klasa *a = new klasa();  QObject::connect(a,SIGNAL(sigSetTabelaItem(int,int,QTableWidgetItem*)),ui->Tabela,SLOT(setItem(int,int,QTableWidgetItem*)));

    QTableWidgetItem *qq = new QTableWidgetItem;
    qq->setText("klik");
    //ui->Plansza->setItem(1,1,qq); to działa, ale potrzebuję dostępu z klasy
    gra->setTabelaItem(1,1,qq);

klasa.cpp

 
void klasa:setTabelaItem(int row, int column, QTableWidgetItem * qq)
{
    emit sigSetTabelaItem(row,column,qq);
}

klasa.h

    void setTabelaItem(int,int,QTableWidgetItem*);
signals:
    void sigSetTabelaItem(int,int,QTableWidgetItem*);

T w komentarzu jest Tabela, a nie Plansza.

0

setItem z QTableWidget jest publiczną metodą a nie slotem. Sygnał można podpiąć tylko i wyłącznie do slotu.

0

No rzeczywiście. A jest jakiś sposób, żeby dostać się do tej funkcji z klasy?

A da się jakoś przekazać ui przez referencję? Jak przekazałem MainWindow i chciałem się dostać do ui to pisało że jest prywatne, a jak przekazuję ui to mam błąd:

invalid use of incomplete type 'class Ui::MainWindow'

0

Nagłówek "ui_mainwindow.h" musi być dołączony tam,gdzie chcesz użyć klasy ui.Ale generalnie przekazywanie ui poza używającą go klasę jest błędnym designem programu.Jeśli używasz tylko 1 qlabela zeń to prześlij tylko tego labela nie całą formatkę.

0

Dzięki, już wszystko gra. Potrzebowałem przekazywać całe ui, bo klasa operuje na 8 labelach i QTableWidget i chyba tak będzie wygodniej.

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