Название: No such slot QFrame::printDocument(QPrinter*)
Отправлено: negative от Сентябрь 01, 2009, 11:36
Хочу вывести превьюшку. void mainArea::printPreview() { QPrinter printer;
QPrintPreviewDialog preview( &printer, this ); connect( &preview, SIGNAL(paintRequested(QPrinter *) ), this, SLOT(printDocument(QPrinter*))); preview.exec(); }
void mainArea::printDocument( QPrinter *printer_ ) { QPainter painter; painter.begin(printer_); this->render( printer_ ); painter.end(); } Мне сообщают, что Object::connect: No such slot QFrame::printDocument(QPrinter*), и вылезает пустая превьюшка. В чем тут дело?
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: Пантер от Сентябрь 01, 2009, 11:39
void mainArea::printDocument( QPrinter *printer_ ) не слот, вот об этом и говорит. Нужно в хедере сделать C++ (Qt) private Q_SLOTS: void printDocument( QPrinter *printer_ );
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: pastor от Сентябрь 01, 2009, 11:39
А printDocument объявлен как слот? Q_OBJECT есть?
Покажи вобжем *.h файл
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: negative от Сентябрь 01, 2009, 11:43
#ifndef MAINAREA_H #define MAINAREA_H
#include <QtGui/QScrollArea> #include <QMouseEvent> #include <QCursor> #include <vector> #include <QPrintPreviewDialog> #include <QPainter> #include <QPrinter> #include <QColor> #include <QMessageBox> #include <QFile> #include <QFileDialog> #include <QIODevice> #include <QByteArray> #include <QHBoxLayout>
#include "abstractMainArea.h" #include "area.h" #include "textarea.h" #include "imagearea.h" #include "vector_line.h"
using namespace std;
enum AbsractNextAction {CURSOR = 0, TEXT = 1, IMG = 2};
class mainArea : public abstractMainArea { // all elements stored here vector<Area*> element; vector<vectorLine*> line; void deleteArea(int id); bool mouseDown; QPoint mouseGotDown, mouseNow; public: void printPreview(); void deleteSelectedAreas(); AbsractNextAction nextAction; mainArea(QWidget* parent=0); void mousePressEvent ( QMouseEvent * e ); void mouseReleaseEvent ( QMouseEvent * e ); void mouseMoveEvent ( QMouseEvent * e ); void paintEvent(QPaintEvent *e); void unselectAll(int eid); void selectAll(); char * Store(); // Genetate text info about elements void addText(int X=0, int Y=0, const QString & data = ""); void addImage(int X=0, int Y=0, const QString & data = ""); void addLine(); private slots: void printDocument( QPrinter *printer_ );
};
#endif // MAINAREA_H
Случайно удалил вместо редактирования пост...вот восстановил
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: pastor от Сентябрь 01, 2009, 11:44
Q_OBJECT забыл
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: negative от Сентябрь 01, 2009, 11:48
#ifndef MAINAREA_H #define MAINAREA_H
#include <QtGui/QScrollArea> #include <QMouseEvent> #include <QCursor> #include <vector> #include <QPrintPreviewDialog> #include <QPainter> #include <QPrinter> #include <QColor> #include <QMessageBox> #include <QFile> #include <QFileDialog> #include <QIODevice> #include <QByteArray> #include <QHBoxLayout>
#include "abstractMainArea.h" #include "area.h" #include "textarea.h" #include "imagearea.h" #include "vector_line.h"
using namespace std;
enum AbsractNextAction {CURSOR = 0, TEXT = 1, IMG = 2};
class mainArea : public abstractMainArea { Q_OBJECT // all elements stored here vector<Area*> element; vector<vectorLine*> line; void deleteArea(int id); bool mouseDown; QPoint mouseGotDown, mouseNow; public: void printPreview(); void deleteSelectedAreas(); AbsractNextAction nextAction; mainArea(QWidget* parent=0); void mousePressEvent ( QMouseEvent * e ); void mouseReleaseEvent ( QMouseEvent * e ); void mouseMoveEvent ( QMouseEvent * e ); void paintEvent(QPaintEvent *e); void unselectAll(int eid); void selectAll(); char * Store(); // Genetate text info about elements void addText(int X=0, int Y=0, const QString & data = ""); void addImage(int X=0, int Y=0, const QString & data = ""); void addLine(); private slots: void printDocument( QPrinter *printer_ );
};
#endif // MAINAREA_H
При добавлении Q_OBJECT появилось :-1: error: collect2: ld returned 1 exit statusЧто с этим делать?)
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: BRE от Сентябрь 01, 2009, 11:58
При добавлении Q_OBJECT появилось :-1: error: collect2: ld returned 1 exit status Что с этим делать?)
make distclean && qmake && make
Название: Re: No such slot QFrame::printDocument(QPrinter*)
Отправлено: negative от Сентябрь 01, 2009, 12:04
Огромное спасибо) Все заработало)
|