Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
1

Сигнал не коннектится со слотом

30.03.2014, 13:39. Просмотров 608. Ответов 2
Метки нет (Все метки)

Всем привет. Начал изучать Qt, решил опробовать механизм сигналов и слотов:
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
49
#include <QtCore>
#include <QtGui>
#include <QString>
#include <sstream>
#include <string>
#include <iostream>
 
 
class Counter : public QObject
{
    Q_OBJECT
private:
    int value;
    QLabel *line;
public:
        Counter(int _value = 0, QWidget *parent = 0);
public slots:
        void change_value();
       signals:
        void value_changed(int new_value) { new_value = value; }
};
 
Counter::Counter(int _value, QWidget *parent) : value(_value), QObject(parent)
{
    line = new QLabel(parent);
    line->setNum(0);
    line->setGeometry(30, 30, 50, 30);
    line->show();
}
 
void Counter::change_value()
{
    value += 1;
    line->setNum(value);
}
 
int main(int argc, char** argv)
{
    QApplication application(argc, argv);
 
    QWidget window;
    Counter cnt(0, &window);
    QPushButton pushme("Push Me", &window);
    QObject::connect(&pushme, SIGNAL(clicked()), &cnt, SLOT(change_value()));
    pushme.show();
    window.show();
 
    return application.exec();
}
По задумке должна быть кнопка, при нажатии на которую значение в label должно увеличиться на 1. Но среда пишет такое: Object::connect: No such slot Counter::change_value() in ..\test_project\main.cpp:44
Что здесь не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 13:39
Ответы с готовыми решениями:

Не конектится сигнал со слотом
у меня есть слот void MainWindow::comboSelectItem(int b) { } я его связываю с сигналом ...

Как связать сигнал QListWidget со слотом QTextEdit ?
В виджете QListWidget есть список элементов из QMap::key(), в виджете QTextEdit хочу получать...

Связать сигнал еще не существующего объекта со слотом
connect(progress, SIGNAL(close()), SLOT(showHidden()));В конструкторе MainWindow хочу связать...

Программа неожиданно завершилась. Когда соединяю сигнал со слотом
В конструкторе прописал: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ...

Законнектить сигнал элемента контейнера, на который установлен и итератор со слотом
Есть контейнер QList&lt;QTcpSocket*&gt; list итератор QMutableListIterator&lt;QTcpSocket&gt; i i...

2
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.03.2014, 13:42 2
Лучший ответ Сообщение было отмечено Dani как решение

Решение

Цитата Сообщение от Dani Посмотреть сообщение
Что здесь не так?
Если все лежит в одном cpp-файле, то moc не сгенерирует дополнительные файлы. Поэтому либо надо выносить класс Counter в отдельный заголовочный файл, либо "хакнуть" систему, добавив main.cpp в HEADERS в pro-файле и дописать include "main.moc" (или как-то так). Настоятельно рекомендую пойти по первому пути.
1
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
30.03.2014, 13:47 3
Лучший ответ Сообщение было отмечено Dani как решение

Решение

Цитата Сообщение от Dani Посмотреть сообщение
Что здесь не так
Описание класса со слотом необходимо вынести в h-файл.
Этот файл прописать в pro-файле: HEADERS +=...
Запустить qmake.
потом make
Только в этом случае отработает прекомпилятор moc и создадутся нужные файлы.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 13:47

Как соединить сигнал с "неизвестными" аргументами со слотом?
Как можно соединить &quot;неизвестный&quot; сигнал со слотом, у которого все принимаемые параметры -...

Как соединить сигнал класса MainWindow openFile c слотом класса MainController openFile?
класс главного окна class MainWindow : public QMainWindow { Q_OBJECT public: ...

Проблема со слотом
Создал класс наследник от QGraphicsView добавил сигнал но отладчик при запуске пишет No such slot...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru