m_avrina
@m_avrina
Студентота.

Сигналы и слоты QT, почему не рабоатет?

Всем привет!

Возникла проблема и что-то как-то не вижу решения(
Есть 2 класса, в 1 классе я получаю из едита имя
И мне необходимо во 2 классе получить данную переменную ,обычное наследование не полходит, т.к. классы, котоыре наследуются от QObject - не наследуются.

Пытался делать через сигналы и слоты, но не выходит(
Просто ничего не происходит. ВОт немного кода:

1 класс, где получаю имя
class MainWindow : public QMainWindow,public WorkWithArrayName
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
     void   fireSignl();
private slots:
    void on_pushButton_clicked();
    void on_actionCreateNewWindow_triggered();
    void on_pushButton_2_clicked();
private:
    Ui::MainWindow *ui;
    QSqlDatabase db;
protected:
    QString Name,Password,*qwe,*password_arr,userN;
signals:
    void foo(QString name);
};

Метод foo
void MainWindow::fireSignl()
{
    emit foo(userN);
}


2 класс
class AfterRegistration : public QMainWindow, public WorkWithArrayName
{
    Q_OBJECT

public:
    explicit AfterRegistration(QWidget *parent = 0);
    ~AfterRegistration();
    void BrightContrastEffect();
private slots:
    void on_pushButton_2_clicked();
    void on_pushButton_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_pushButton_8_clicked();
public slots:
    void bar(QString name);
private:
      Mat  MatImage;
      IplImage *dst=0;
      Mat dst1;
      int i,j,k=0;
       char* nameOfFile;
       char *named,*pathc,*allPA;
       QString nam;

    Ui::AfterRegistration *ui;
};


метод bar
void AfterRegistration::bar(QString name)
{
    nam=name;
}

Вот сама связь,которую вызываю в cpp файле второго класса
MainWindow mainwin;
        AfterRegistration reg;
        QObject::connect(&mainwin,SIGNAL(foo(QString)),&reg,SLOT(bar(QString)));
        mainwin.fireSignl();
  • Вопрос задан
  • 232 просмотра
Решения вопроса 2
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
Не могли бы выложить весь проект на гитхаб или сюда архивом прекрепить?
1) Почему AfterRegistration наследуется от QMainWindow? Там просто QWidget должен быть или даже QDialog.
2) Попробуйте вот такой механизм соединения:
QObject::connect(&mainwin, &MainWindow::foo, &reg, &AfterRegistration::bar);
Ответ написан
Комментировать
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
А Event Loop точно запущен?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы