Russian Qt Forum
Ноябрь 23, 2024, 20:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: connect()  (Прочитано 2163 раз)
anatoliy26
Гость
« : Январь 24, 2018, 07:17 »

Всем добрый день.
Начал разбираться с Qt, столкнулся с такой проблемой, пытаюсь с помощью connect() запускать анимацию в обьекте mo(Qmovie) по нажатию кнопки на форме:
 connect(ui->BtnStart, signal(clicked()), &mo, SLOT(start()));

при компиляции кода выпадает ошибка 'connect' was not declared in this scope.
не могу понять в чем проблема, судя по документации connect() - стандартный сигнал для обьекта класса QPushButton.
Может кто обьяснить что я не так делаю?

сам код:
widget.h:
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSystemTrayIcon>
#include <QMouseEvent>
#include <QMovie>
#include <QAbstractButton>
#include <QPushButton>

class QAbstractButton;
class QPushButton;
class QWidget;

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);

    explicit Widget(QWidget *parent = 0);
    ~Widget();


private slots:
    void on_pushButton_pressed();

    void on_pushButton_2_clicked();
    void setSpeedMovie(int);
    void setSizeMovie(int);
private:
    Ui::Widget *ui;
    QPoint mpos;
    QMovie mo;
    double m;


};

#endif // WIDGET_H

widget.cpp:

#include "windows.h"
#include "widget.h"
#include "ui_widget.h"
#include <QSystemTrayIcon>
#include <QMouseEvent>
#include <QMovie>
#include <QPixmap>
#include <QLabel>
#include <QAbstractButton>
#include <QPushButton>
#include <QWidget>
#include <QEvent>
#include <QKeyEvent>
#include <QSignalMapper>
#include <QSignalBlocker>
#include <QSignalTransition>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::Dialog |  Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint | Qt::FramelessWindowHint);
    mo.setFileName (":/resource/images/cats_04.gif");
    ui->LBmovie->setMovie(&mo);
    connect(ui->BtnStart, signal(clicked()), &mo, SLOT(start()));
    connect(ui->BtnStop, signal(clicked()), &mo, SLOT(stop()));


}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_pressed()
{
    Widget::close();
}



void Widget::on_pushButton_2_clicked()
{
    Widget::showMinimized();
}

void Widget::mousePressEvent(QMouseEvent *event){
    mpos = event->pos();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton){
        QPoint diff = event->pos() - mpos;
        QPoint newpos = this->pos() + diff;
        this->move(newpos);
    }
}




Записан
anatoliy26
Гость
« Ответ #1 : Январь 24, 2018, 09:48 »

разобрался в проблеме, если вдруг еще у кого возникнет такой же вопрос, ошибка в аргументах функции connect, для успешной компиляции кода необходимо написать:

QObject::connect(ui->BtnStart, &QPushButton::clicked, &mo, QMovie::start);
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Январь 24, 2018, 13:14 »

signal надо было капсом написать, тогда б заработало
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 22.