[QT Creator]Nie mogę przekazać sygnału z innej klasy
Ostatnio zmodyfikowano 2015-06-14 19:27
kwiatek Temat założony przez niniejszego użytkownika |
[QT Creator]Nie mogę przekazać sygnału z innej klasy » 2015-06-14 15:25:31 Witam, zaczynam swoją przygodę z QT i pojawił się niestety problem z przekazaniem sygnału, kompilator nie wyświetla żadnego problemu, ale nie widać też skutku działania. Na razie program ma tylko wyświetlić na obiekcie label komunikat czy zostało nawiązane połączenie, nie mam pomysłu czego brakuje. Dziękuję z góry za pomoc, poniżej znajdują się pliki projektu: #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QThread> #include "system_chck.h"
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow( QWidget * parent = 0 ); void cos(); void run(); ~MainWindow(); private slots: void on_connection_status_linkActivated( const QString & link ); void on_label_objectNameChanged( const QString & objectName ); void onping_result( int ); private: Ui::MainWindow * ui; system_chck * system_chck_wsk; };
#endif
#ifndef SYSTEM_CHCK_H #define SYSTEM_CHCK_H #include <QThread> #include <QDialog> #include <QMainWindow>
class system_chck : public QDialog { Q_OBJECT int ping; public: int state; int network_chck(); signals: void ping_result( int ); };
#endif
#include "mainwindow.h" #include "ui_mainwindow.h" #include "system_chck.h" #include <unistd.h> #include <QThread> #include <iostream>
MainWindow::MainWindow( QWidget * parent ) : QMainWindow( parent ) , ui( new Ui::MainWindow ) { ui->setupUi( this ); system_chck_wsk = new system_chck(); system_chck_wsk->network_chck(); connect( system_chck_wsk, SIGNAL( ping_result( int ) ), this, SLOT( onping_result( int ) ) ); }
MainWindow::~MainWindow() { delete ui; }
void MainWindow::cos() { }
void MainWindow::onping_result( int state ) { if( state == 0 ) { ui->label->setText( "Nawiazano polaczenie!" ); } else { ui->label->setText( "Brak polaczenia!" ); sleep( 3 ); } }
void MainWindow::on_connection_status_linkActivated( const QString & link ) { }
void MainWindow::on_label_objectNameChanged( const QString & objectName ) { }
#include "system_chck.h" #include <iostream> #include <stdio.h> #include <stdlib.h> #include <fstream> #include <unistd.h>
int system_chck::network_chck() { ping = system( "ping -c1 google.com >&-" ); state = WEXITSTATUS( ping ); return state; emit ping_result( state ); }
|
|
Monika90 |
» 2015-06-14 16:35:48 return state; emit ping_result( state );
|
emit się nigdy nie wykona, bo jest po return. |
|
kwiatek Temat założony przez niniejszego użytkownika |
» 2015-06-14 19:11:23 Zakomentowanie return niestety nic nie zmieniło. |
|
Monika90 |
» 2015-06-14 19:25:37 Wywołujesz system_chck_wsk->network_chck(); zanim podłączysz slot do sygnału, więc nic dziwnego, że nie możesz odebrać.
|
|
kwiatek Temat założony przez niniejszego użytkownika |
» 2015-06-14 19:27:50 Faktycznie, działa, dziękuję za pomoc :) |
|
« 1 » |