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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bramme
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 60
#1

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

16.11.2013, 21:25. Просмотров 367. Ответов 4
Метки нет (Все метки)

Всем привет. Хотел уточнить один факт, допустим дан код:
Класс 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 не был знаком, поэтому элементарные вещи могу не знать.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2013, 21:25     Сигнал-слот
Посмотрите здесь:

Звуковой сигнал \a C++
C++ Определить, сигнал какого цвета сигнал горит для пешеходов в этот момент.
C++ Сигнал SIGABRT
Звуковой сигнал биппера! (C++) C++
C++ Звуковой сигнал при выводе символа
C++ Звуковой сигнал!
C++ Не подается звуковой сигнал
C++ Сигнал об обновлении данных
Послать сигнал серверу о результатах поиска C++
Входной сигнал C++
Сигнал, Индекс массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
444 / 293 / 20
Регистрация: 22.03.2011
Сообщений: 957
Завершенные тесты: 2
16.11.2013, 21:38     Сигнал-слот #2
Цитата Сообщение от Bramme Посмотреть сообщение
До этого с Qt не был знаком, поэтому элементарные вещи могу не знать.
Вы понимаете, как бредово это звучит.

А ответ нет. QPushButton имеет сигнал clicked
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 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
444 / 293 / 20
Регистрация: 22.03.2011
Сообщений: 957
Завершенные тесты: 2
16.11.2013, 22:34     Сигнал-слот #5
Обьясню.

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

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

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

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