Russian Qt Forum

Qt => Вопросы новичков => Тема начата: anatoliy26 от Январь 24, 2018, 07:17



Название: connect()
Отправлено: 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);
    }
}






Название: Re: connect()
Отправлено: anatoliy26 от Январь 24, 2018, 09:48
разобрался в проблеме, если вдруг еще у кого возникнет такой же вопрос, ошибка в аргументах функции connect, для успешной компиляции кода необходимо написать:

QObject::connect(ui->BtnStart, &QPushButton::clicked, &mo, QMovie::start);


Название: Re: connect()
Отправлено: kambala от Январь 24, 2018, 13:14
signal надо было капсом написать, тогда б заработало