Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
6 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 23
1

Сигналы и слоты

22.02.2015, 11:28. Показов 1460. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Не могу разобраться в сигналах и слотах.

Сначала приведу код:

Кликните здесь для просмотра всего текста
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
    QLabel *lblResult; // сюда выводим итоговый результат
    QLabel *comment_1; // First
    QLabel *comment_2; // Module
    QLineEdit *teFirstNumber; // ввод первого числа
    QLineEdit *teMod; // ввод модуля
    QPushButton *btnResult; // кнопка получения результата
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "modulo.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QLabel *comment_1 = new QLabel(this);
    comment_1 -> setGeometry(90,20,60,30);
    comment_1 -> setText("First");
 
    QLabel *comment_2 = new QLabel(this);
    comment_2 -> setGeometry(160,20,60,30);
    comment_2 -> setText("Module");
 
    QLabel *lblResult = new QLabel(this);
    lblResult -> setGeometry(90,150,60,30);
    lblResult -> setText("Result");
 
    QLineEdit *teFirstNumber = new QLineEdit(this);
    teFirstNumber -> setGeometry(90,50,60,30);
 
    QLineEdit *teMod = new QLineEdit(this);
    teMod -> setGeometry(160,50,60,30);
 
    QPushButton *btnResult = new QPushButton(this);
    btnResult -> setGeometry(90,100,60,30);
    btnResult -> setText("Click");
 
    //////////////////////////////////////////////
    /////   Получение данных из QLineEdit
    /////////////////////////////////////////////
 
    int firstNumber = teFirstNumber -> text().toInt();
    int modNumber = teMod -> text().toInt();
 
 
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
modulo.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef MODULO_H
#define MODULO_H
 
#include <QObject>
 
class Modulo : public QObject
{
    Q_OBJECT
 
public:
    explicit Modulo(QObject *parent = 0);
 
    void getModulo(int number_1, int number_mod);
 
    ~Modulo();
 
signals:
 
public slots:
};
 
#endif // MODULO_H
modulo.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "modulo.h"
 
Modulo::Modulo(QObject *parent) : QObject(parent)
{
 
}
 
void getModulo(int number_1, int number_mod){
 
    int number_result;
 
    number_result = number_1 % number_mod;
}
 
Modulo::~Modulo()
{
 
}


Не пойму что делать дальше, я хочу чтобы по нажатию кнопки btnResult данные из QLineEdit-ов отправлялись в класс Modulo, попадали в функцию getModulo(), производились вычисления, и потом результат пришел обратно и записался в lblResult.

Пожалуйста подскажите как это сделать, думаю если один раз увижу как это делать, проблем с этим больше не возникнет. Заранее благодарен!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2015, 11:28
Ответы с готовыми решениями:

Сигналы и Слоты
При вызове функции SendSignal(); образуется сигнал, который должен пораждать вызову слота и на экра...

Сигналы и Слоты
Помогите разобраться. У меня есть некий объект ContextMenu из которого хочу послать сигнал в...

Сигналы и слоты
Смысл следующий: Вводим число в spinBox, это число, с помощью сигнала, передаётся слоту объекта...

Сигналы и слоты
Заезженная тема, со стороны простая, не думал, что найду тут проблемы, но! Есть основной класс...

1
Автор FAQ
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
22.02.2015, 11:55 2
Лучший ответ Сообщение было отмечено vendetta13 как решение

Решение

Вешайте обработчик сигнала от btnResult:
C++ (Qt)
1
connect(btnResult, SIGNAL(clicked()), this, SLOT(pushData());
где pushData() это слот объявленный в классе MainWindow:
C++ (Qt)
1
2
3
4
5
private slots:
void pushData();
//так же объявим и сигнал
signals:
void result(QString);
в MainWindow пишите реализацию этого слота:
C++ (Qt)
1
2
3
4
void MainWindow::pushData()
{
   emit result(lblText);
}
lblText - переменная которая хранит данные которые надо передать в класс Modulo
теперь можете соединить сигнал result cо слотом в классе Modulo в котором уже будете обрабатывать данные переданнче в переменной lblText;
C++ (Qt)
1
connect(this, SIGNAL(result(QString)), module, SLOT(userData(QString));
где module - объект класса Modulo а userData слот в классе Modulo который будет принимать данные от сигнала result

Немного сумбурно, но должно быть понятно
1
22.02.2015, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2015, 11:55
Помогаю со студенческими работами здесь

Сигналы\слоты
что можно сделать со сл. кодом ...

Сигналы и слоты
Здравствуйте,хотел б узнать в qt использовать слоты или функции?Если есть механизм сигналов и...

Сигналы и слоты
Есть 2 виджета: поле ввода и кнопка. Хочу на этом примере опробовал сигнально-слотовое соединение....

Сигналы и слоты
Столкнулся с типичной для многих новичков в Qt проблемой, связанное с сигналами и слотами. Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru