Witam,
od jakiegoś czasu uczę się framework'a Qt i jakieś dwa dni temu pojawił się pewien problem, a mianowicie utknąłem na próbie wywołania metody z klasy A (przykładowa nazwa dla zobrazowania) w klasie B.
Szukałem po forach, stronach, czytałem dużo o slotach i sygnałach próbując działać, niestety z marnym skutkiem, ponieważ albo generowałem błędy a jak udało mi się je zwalczyć to program po prostu nie działał jak powinien.
Metoda w klasie A którą chciałbym wywołać (umieszczałem ją w A.h jako slot oraz jako public i z pliku main mogłem utworzyć obiekt i ją wywołać lecz w klasie B już nie) :
void MainWindow::sendMessage(QString message){
ui->mainLog->append(message);
}
Klasa B(tutaj mam metodę w pliku B.h jako public connect):
void ConnectToServer::Connect()
{
socket = new QTcpSocket(this); //tworzenie gniazdka o nazwie socket
socket -> connectToHost("192.168.1.3", 1234); // próba podłaczenia pod dany adres i port
if(socket->waitForConnected(3000))
{
qDebug() << "Connected";
socket -> write("TestServer"); //wysłanie wiadomosci do servera
socket -> waitForBytesWritten(1000); // czas na wysłanie
socket -> waitForReadyRead(3000); // czas na nasłuch
qDebug() <<"Reading: " << socket -> bytesAvailable(); //czeka na liczbe bitów do odczytu
qDebug() << socket -> readAll(); //odczytuj
socket -> close(); //zamkniecie polaczenia
}
Przed wywołaniem socket -> close() próbowałem wywołać właśnie metodę sendMessage.
próbowałem tworzyć przed if'em w funkcji connect MainWindow *user = new MainWindow(); i działać na tym obiekcie lecz tak jak wspomniałem wcześniej z marnym skutkiem, czy mógłby ktoś mnie nakierować/pomóc przy okazji tłumacząc w miare dlaczego tak mam to wykonać?