| 
 Название: 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
 
 Огромное спасибо) Все заработало) 
 
 |