Форум программистов, компьютерный форум CyberForum.ru

Сигнал-слот - C++

Восстановить пароль Регистрация
 
Bramme
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 60
16.11.2013, 21:25     Сигнал-слот #1
Всем привет. Хотел уточнить один факт, допустим дан код:
Класс pole.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class pole : public QFrame
{
    Q_OBJECT
 
public:
    explicit pole(QWidget *parent = 0);
 
protected:
    virtual void mousePressEvent(QMouseEvent *make_step_event);
 
signals:
    void make_step_clicked();
 
private slots:
    void on_stepbuttonClicked();
    
private:
    QPushButton *make_step;
Реализация класса pole.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "pole.h"
 
void pole::mousePressEvent(QMouseEvent *make_step_event)
{
    if (make_step_event->button()==Qt::LeftButton)
        emit make_step_clicked();
}
 
pole::pole(QWidget *parent) :
    QFrame(parent), m_ui(new Ui::pole)
{
    m_ui->setupUi(this);
    connect(make_step,SIGNAL(clicked()),this,SLOT(on_stepbuttonClicked()));
}
 
void pole::on_stepbuttonClicked()
{
    QCoreApplication::exit(1);
}
Так вот, хотелось бы понять, являются ли сигналы clicked() и make_step_clicked() идентичными(т.е. просто разные формы записи). Ведь в функции connect мы подаем сигнал clicked(), а в заголовочном файле сигнал нажатия обозначен как make_step_clicked().
До этого с Qt не был знаком, поэтому элементарные вещи могу не знать.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
16.11.2013, 21:38     Сигнал-слот #2
Цитата Сообщение от Bramme Посмотреть сообщение
До этого с Qt не был знаком, поэтому элементарные вещи могу не знать.
Вы понимаете, как бредово это звучит.

А ответ нет. QPushButton имеет сигнал clicked
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
16.11.2013, 21:39     Сигнал-слот #3
clicked() — сигнал QPushButton.
make_step_clicked() — сигнал pole.
Это разные сигналы.
Bramme
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 60
16.11.2013, 22:02  [ТС]     Сигнал-слот #4
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
clicked() — сигнал QPushButton.
make_step_clicked() — сигнал pole.
Это разные сигналы.
Если убрать определение сигнала make_step_clicked() и функцию mousePressEvent, то выдаст ошибку. Я так и не могу понять, как сигнал make_step_clicked() распознается

Могу ли я просто заменить make_step_clicked() на clicked()?
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
16.11.2013, 22:34     Сигнал-слот #5
Обьясню.

Разработчки данного кода подразумевал, что у него есть некторый фрейм (pole) на котором размещена кнопка make_step.

Далее он захотел чтобы по нажатию на кнопку выполнялась определенная логика, поэтому он подписал событие QPushButton на обработчик on_stepbuttonClicked.

Но этого ему было не достаточно. Он также захотел, чтобы при клике левой кнопкой мыши на область pole тоже выполнялся обработчик on_stepbuttonClicked.
Yandex
Объявления
16.11.2013, 22:34     Сигнал-слот
Ответ Создать тему
Опции темы

Текущее время: 20:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru