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

Как передать параметр в слот?

26.09.2018, 13:26. Показов 13064. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. Вопрос такой. Как в слот передать параметр? Где то вроде бы читал, что количество параметров в
слоте должно быть равным количеству параметров в сигнале. Но я слишком тупой, чтобы это понять.

Вот код:

это место, где я коннекчу
C++
1
 connect(i,SIGNAL(clicked()),i, SLOT(changeColor(scene)));
Это, короче, заголовочный файл. На всякий.

C++
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
#ifndef ICONS_H
#define ICONS_H
 
#include <QObject>
#include <QGraphicsRectItem>
#include <QGraphicsView>
#include <QGraphicsSceneMouseEvent>
 
class Icons:public QObject, public QGraphicsRectItem{
    Q_OBJECT
public:
    int xPos, yPos, type;
    Icons(QGraphicsItem *parent = NULL);
    void setIcon(int x, int y, int t);
    void addIcon(QGraphicsScene *scene);
    void removeIcon(QGraphicsScene *scene);
    void changeIconColor(QGraphicsScene *scene);
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
public slots:
    void setIconColor();
 
signals:
    void clicked();
};
 
#endif // ICONS_H

Это использование clicked() в сpp файле
C++
1
2
3
4
void Icons::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    emit clicked();
}
Класс Icons реализует что-то вроде кнопки (но не кнопку). При нажатии на которую она должна выделяться. Но пока-что, она просто должна менять цвет. Или хотя-бы выводить сообщение qDebug о том, что "кнопка" нажата, при том, что в слот передается параметр (QGraphicsScene)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2018, 13:26
Ответы с готовыми решениями:

Как передать аргументы командной строки для обработки в слот?
Считай только начал работать с Qt. Возникла такая задача: обработать аргументы командной строки...

Как передать параметр из jsp java страницы в функцию javascript и возвратить обратно другой параметр
На jsp странице имеется динамически формируемая таблица с чекбоксами в первой колонке каждой строки...

Как передать параметр
Привет всем ! Подскажите как передать параметр в контроллер. То есть ввожу значение в текстбокс, и...

Как передать параметр?
Вопрос как сделать так чтобы в методе класса в качестве параметра передавать указатель на этот...

1
7 / 4 / 2
Регистрация: 23.09.2018
Сообщений: 17
26.09.2018, 14:04 2
Тут пара замечаний.
1. На Press обычно не делают таких действий, из-за неопределенности положения мыши при release. Типа нажал и сдвинул. Обычно делают на release.
2. А зачем такие сложности? Просто в обработчике mousePressEvent вызови changeIconColor;
точнее так
C++ (Qt)
1
changeIconColor(scene());
Другое дело, если слот в другом классе. Тогда сигнал должен быть с параметром :
C++ (Qt)
1
2
signals:
    void clicked(Icons *item);
А эмит: emit clicked(this);

или
C++ (Qt)
1
2
signals:
    void clicked(QGraphicsItem*item);
эмит: emit clicked(dynamic_cast<QGraphicsItem*>(this));


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

Как передать параметр потоку?
Добрый день, возник вопрос как передать параметр потоку, нужно чтобы каждый запрос WebRequest...

Как передать параметр в запрос?
Есть форма. переходим на запись N. В нужном поле видим значение. Это значение нужно передать в...

Функцию передать как параметр с++
Функцию передать как параметр с помощью указателя с++ Как это сделать?

Как передать параметр по ссылке?
Есть ссылка: &lt;a name=&quot;directory&quot; value=&quot;&lt;%=directoryName%&gt;&quot; href=&quot;StartServlet&quot;&gt;&lt;img...


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

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