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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Снова сигналы и слоты  (Прочитано 3898 раз)
romanoff346
Гость
« : Февраль 06, 2012, 13:39 »

Есть вот такая программа я пытаюсь на её основе создать построитель графиков:

Mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

mygraphicsview.h

#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H

#include <QGraphicsView>


class MyGraphicsView : public QGraphicsView
{
    Q_OBJECT
public:
    explicit MyGraphicsView(QWidget *parent = 0);
    void paintEvent(QPaintEvent *event);

signals:

public slots:

    void calc();

};

#endif // MYGRAPHICSVIEW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mygraphicsview.h"

using namespace std;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->pushButton, SIGNAL(clicked()),&MyGraphicsView,SLOT(calc()));
    
}

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

MyGraphicsView.cpp

#include "mygraphicsview.h"
#include <QPainter>
#include <QDebug>

using namespace std;

MyGraphicsView::MyGraphicsView(QWidget *parent) :
    QGraphicsView(parent)
{

}



void MyGraphicsView::paintEvent(QPaintEvent *event)
{
    QPainter p(this->viewport());
    p.setPen(Qt::red);
    p.drawText(10,10,"some text jkldfhsoufhuwfhlasufirhauihrtguihi");

}

void MyGraphicsView::calc()
{
    int i=0;
}


Когда я пытаюсь связать сигнал нажатия на кнопку в главном окне и слот в майграфик вью, Qt выдаёт следующее:

H:\programming\graphic\PaintingTest\PaintingTest-build-desktop\..\PaintingTest\mainwindow.cpp:13: ошибка: expected primary-expression before ',' token

Каким образом я могу по сигналу из одного класса совершить действие в другом?


// Пользуйся тегом Код
« Последнее редактирование: Февраль 06, 2012, 16:43 от pastor » Записан
mutineer
Гость
« Ответ #1 : Февраль 06, 2012, 13:42 »

Где создание объекта MyGraphicsView ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Февраль 06, 2012, 13:47 »

Тебе же давали ссылку насчёт QGraphicsView.
Не осилил что ли Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
romanoff346
Гость
« Ответ #3 : Февраль 06, 2012, 13:51 »

Хороший вопрос... Если не использовать коннект, то эта программа работает, и пишет в окошке текст, который указан в график вью....
Записан
mutineer
Гость
« Ответ #4 : Февраль 06, 2012, 13:52 »

коннектить надо не к классу, а к объекту же
Записан
romanoff346
Гость
« Ответ #5 : Февраль 06, 2012, 13:53 »

осилил, но не понял..... Непонимающий Грустный
Записан
romanoff346
Гость
« Ответ #6 : Февраль 06, 2012, 14:23 »

А с сигналами как? Я это пытался делать не только применительно к графике.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Февраль 06, 2012, 14:55 »

А с сигналами как? Я это пытался делать не только применительно к графике.
А сигналы тут не причём. Проблема в незнании азов C++.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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