Hi all,
I'm writing an application and when th compilation is doing well; But when I launch it I have the following messages from debugger :
Début du débogageObject::connect: No such slot FenetrePrincipale::genPdf(m_userView,filename) in ..\callTracker\PageUser.cpp:52
Object::connect: No such slot FenetrePrincipale::goTab(m_search,titre) in ..\callTracker\FenetrePrincipale.cpp:49
Object::connect: No such slot FenetrePrincipale::goTab(m_user,titre) in ..\callTracker\FenetrePrincipale.cpp:55
Object::connect: No such slot FenetrePrincipale::goTab(m_user,titre) in ..\callTracker\FenetrePrincipale.cpp:61
Object::connect: No such slot FenetrePrincipale::genPdf(m_search,filename) in ..\callTracker\FenetrePrincipale.cpp:67
Object::connect: No such slot FenetrePrincipale::goTab(m_stat,titre) in ..\callTracker\FenetrePrincipale.cpp:73
Object::connect: No such slot FenetrePrincipale::goTab(m_accueil,titre) in ..\callTracker\FenetrePrincipale.cpp:79
Début du débogageObject::connect: No such slot FenetrePrincipale::genPdf(m_userView,filename) in ..\callTracker\PageUser.cpp:52
Object::connect: No such slot FenetrePrincipale::goTab(m_search,titre) in ..\callTracker\FenetrePrincipale.cpp:49
Object::connect: No such slot FenetrePrincipale::goTab(m_user,titre) in ..\callTracker\FenetrePrincipale.cpp:55
Object::connect: No such slot FenetrePrincipale::goTab(m_user,titre) in ..\callTracker\FenetrePrincipale.cpp:61
Object::connect: No such slot FenetrePrincipale::genPdf(m_search,filename) in ..\callTracker\FenetrePrincipale.cpp:67
Object::connect: No such slot FenetrePrincipale::goTab(m_stat,titre) in ..\callTracker\FenetrePrincipale.cpp:73
Object::connect: No such slot FenetrePrincipale::goTab(m_accueil,titre) in ..\callTracker\FenetrePrincipale.cpp:79
To copy to clipboard, switch view to plain text mode
In addition, th icons of my dock doesn't appears.
And finally, I got a segmentation error message when I click on search and Make report buttons on the PageAccueil. Can you help me?
FenetrePrincipale.h
#ifndef FENETREPRINCIPALE_H
#define FENETREPRINCIPALE_H
#include <QtGui>
#include <QMainWindow>
#include <QtSql>
#include "sstream"
#include "PageAccueil.h"
#include "PageRecherche.h"
#include "PageStat.h"
#include "PageUser.h"
{
Q_OBJECT
public:
explicit FenetrePrincipale
(QWidget *parent
= 0);
private:
void creerAction();
void creerDock();
public slots:
void creerPageRapport();
void goTabint(int position);
private:
PageAccueil *m_accueil;
PageRecherche *m_search;
PageStat *m_stat;
PageUser *m_user;
};
#endif // FENETREPRINCIPALE_H
#ifndef FENETREPRINCIPALE_H
#define FENETREPRINCIPALE_H
#include <QtGui>
#include <QMainWindow>
#include <QtSql>
#include "sstream"
#include "PageAccueil.h"
#include "PageRecherche.h"
#include "PageStat.h"
#include "PageUser.h"
class FenetrePrincipale : public QMainWindow
{
Q_OBJECT
public:
explicit FenetrePrincipale(QWidget *parent = 0);
private:
void creerAction();
void creerDock();
public slots:
void creerPageRapport();
void genPdf(QWidget *view, QString filename);
void goTab(QWidget *page, QString title);
void goTabint(int position);
private:
QTabWidget *m_onglets;
PageAccueil *m_accueil;
PageRecherche *m_search;
PageStat *m_stat;
PageUser *m_user;
QAction *actionAddUser;
QAction *actionConfig;
QAction *actionSearchCall;
QAction *actionDelUser;
QAction *actionModUser;
QAction *actionReport;
QAction *actionStat;
QAction *actionretourAccueil;
QAction *actionQuit;
};
#endif // FENETREPRINCIPALE_H
To copy to clipboard, switch view to plain text mode
FenetrePrincipale.cpp
#include "FenetrePrincipale.h"
FenetrePrincipale
::FenetrePrincipale(QWidget *parent
) :{
m_accueil=new PageAccueil(this);
m_stat=new PageStat(this);
m_user=new PageUser(this);
creerAction();
creerDock();
m_onglets->addTab(m_accueil,tr("Home"));
m_onglets->addTab(m_user,tr("User"));
m_onglets->addTab(m_stat,tr("Statistics"));
connect(m_onglets,SIGNAL(currentChanged(int)),this,SLOT(goTabint(int)));
setCentralWidget(m_onglets);
m_onglets->setTabsClosable(true);
setMinimumSize(500,350);
setWindowIcon
(QIcon("images/logo.png"));
setWindowTitle(tr("callTracker"));
}
void FenetrePrincipale::creerAction()
{
actionAddUser
=new QAction(QIcon("images/add.png"),tr
("Add a &user"),
this);
actionAddUser->setShortcut(tr("Ctrl+U"));
connect(actionAddUser,SIGNAL(triggered()),m_user,SLOT(addBoite()));
actionSearchCall
=new QAction(QIcon("images/search.png"),tr
("&Search a call"),
this);
actionSearchCall->setShortcut(tr("Ctrl+S"));
connect(actionSearchCall,SIGNAL(triggered()),this,SLOT(goTab(m_search,titre)));
actionDelUser
=new QAction(QIcon("images/del.png"), tr
("&Delete user informations"),
this);
actionDelUser->setShortcut(tr("Ctrl+D"));
titre=tr("&User");
connect(actionDelUser,SIGNAL(triggered()),this,SLOT(goTab(m_user,titre)));
actionModUser
=new QAction(tr
("&Update user informations"),
this);
actionModUser->setShortcut(tr("Ctrl+M"));
titre=tr("User");
connect(actionModUser,SIGNAL(triggered()),this,SLOT(goTab(m_user,titre)));
actionReport
=new QAction(QIcon("images/rapport"),tr
("&Generate a call report"),
this);
actionReport->setShortcut(tr("Ctrl+G"));
connect(actionReport,SIGNAL(triggered()),this,SLOT(genPdf(m_search,filename)));
actionStat
=new QAction(tr
("&View calls statistics"),
this);
actionStat->setShortcut(tr("Ctrl+V"));
titre=tr("&Statistics");
connect(actionStat,SIGNAL(triggered()),this,SLOT(goTab(m_stat,titre)));
actionretourAccueil
=new QAction(QIcon("images/accueil.png"),tr
("&Home"),
this);
actionretourAccueil->setShortcut(tr("Ctrl+A"));
titre=tr("Home");
connect(actionretourAccueil,SIGNAL(triggered()),this,SLOT(goTab(m_accueil,titre)));
actionQuit
=new QAction(QIcon("images/quit.png"),tr
("&Quit"),
this);
actionQuit->setShortcut(tr("Ctrl+V"));
connect(actionQuit,SIGNAL(triggered()),qApp,SLOT(quit()));
}
void FenetrePrincipale::creerDock()
{
addDockWidget(Qt::LeftDockWidgetArea,dock);
dock->setFixedWidth(100);
dock->setWidget(contenuDock);
add
->setIcon
(QIcon("images/add.png"));
search
->setIcon
(QIcon("images/search.png"));
del
->setIcon
(QIcon("images/del.png"));
mod
->setIcon
(QIcon("images/mod.png"));
report
->setIcon
(QIcon("images/report.png"));
retAcc
->setIcon
(QIcon("images/home.png"));
stati
->setIcon
(QIcon("images/stat.png"));
quit
->setIcon
(QIcon("images/quit.png"));
add->addAction(actionAddUser);
search->addAction(actionSearchCall);
del->addAction(actionDelUser);
mod->addAction(actionModUser);
report->addAction(actionReport);
retAcc->addAction(actionretourAccueil);
stati->addAction(actionStat);
quit->addAction(actionQuit);
dockLayout->addWidget(add);
dockLayout->addWidget(search);
dockLayout->addWidget(del);
dockLayout->addWidget(mod);
dockLayout->addWidget(report);
dockLayout->addWidget(retAcc);
dockLayout->addWidget(stati);
dockLayout->addWidget(quit);
contenuDock->setLayout(dockLayout);
}
{
int position=m_onglets->indexOf(page);
if(position==-1)
{
m_onglets->addTab(page,title);
}
else
{
m_onglets->setCurrentWidget(page);
};
}
void FenetrePrincipale::goTabint(int position)
{
if(position!=-1)
{
m_onglets->setCurrentIndex(position);
};
}
void FenetrePrincipale::creerPageRapport()
{
goTab(m_search,tr("Search & Report"));
}
{
printer.setOutputFileName(filename);
printer.
setOutputFormat(QPrinter::PdfFormat);
}
#include "FenetrePrincipale.h"
FenetrePrincipale::FenetrePrincipale(QWidget *parent) :
QMainWindow(parent)
{
m_accueil=new PageAccueil(this);
m_stat=new PageStat(this);
m_user=new PageUser(this);
creerAction();
creerDock();
m_onglets=new QTabWidget;
m_onglets->setTabPosition(QTabWidget::East);
m_onglets->addTab(m_accueil,tr("Home"));
m_onglets->addTab(m_user,tr("User"));
m_onglets->addTab(m_stat,tr("Statistics"));
connect(m_onglets,SIGNAL(currentChanged(int)),this,SLOT(goTabint(int)));
setCentralWidget(m_onglets);
m_onglets->setTabsClosable(true);
setMinimumSize(500,350);
setWindowIcon(QIcon("images/logo.png"));
setWindowTitle(tr("callTracker"));
}
void FenetrePrincipale::creerAction()
{
actionAddUser=new QAction(QIcon("images/add.png"),tr("Add a &user"),this);
actionAddUser->setShortcut(tr("Ctrl+U"));
connect(actionAddUser,SIGNAL(triggered()),m_user,SLOT(addBoite()));
actionSearchCall=new QAction(QIcon("images/search.png"),tr("&Search a call"),this);
actionSearchCall->setShortcut(tr("Ctrl+S"));
QString titre("Search & Report");
connect(actionSearchCall,SIGNAL(triggered()),this,SLOT(goTab(m_search,titre)));
actionDelUser=new QAction(QIcon("images/del.png"), tr("&Delete user informations"),this);
actionDelUser->setShortcut(tr("Ctrl+D"));
titre=tr("&User");
connect(actionDelUser,SIGNAL(triggered()),this,SLOT(goTab(m_user,titre)));
actionModUser=new QAction(tr("&Update user informations"),this);
actionModUser->setShortcut(tr("Ctrl+M"));
titre=tr("User");
connect(actionModUser,SIGNAL(triggered()),this,SLOT(goTab(m_user,titre)));
actionReport=new QAction(QIcon("images/rapport"),tr("&Generate a call report"),this);
actionReport->setShortcut(tr("Ctrl+G"));
QString filename=tr("Report");
connect(actionReport,SIGNAL(triggered()),this,SLOT(genPdf(m_search,filename)));
actionStat=new QAction(tr("&View calls statistics"),this);
actionStat->setShortcut(tr("Ctrl+V"));
titre=tr("&Statistics");
connect(actionStat,SIGNAL(triggered()),this,SLOT(goTab(m_stat,titre)));
actionretourAccueil=new QAction(QIcon("images/accueil.png"),tr("&Home"),this);
actionretourAccueil->setShortcut(tr("Ctrl+A"));
titre=tr("Home");
connect(actionretourAccueil,SIGNAL(triggered()),this,SLOT(goTab(m_accueil,titre)));
actionQuit=new QAction(QIcon("images/quit.png"),tr("&Quit"),this);
actionQuit->setShortcut(tr("Ctrl+V"));
connect(actionQuit,SIGNAL(triggered()),qApp,SLOT(quit()));
}
void FenetrePrincipale::creerDock()
{
QDockWidget *dock=new QDockWidget(tr("Actions"),this);
addDockWidget(Qt::LeftDockWidgetArea,dock);
dock->setFeatures(QDockWidget::NoDockWidgetFeatures);
dock->setFixedWidth(100);
QWidget *contenuDock=new QWidget;
dock->setWidget(contenuDock);
QToolButton *add = new QToolButton;
QToolButton *search = new QToolButton;
QToolButton *del = new QToolButton;
QToolButton *mod=new QToolButton;
QToolButton *report = new QToolButton;
QToolButton *retAcc = new QToolButton;
QToolButton *stati=new QToolButton;
QToolButton *quit=new QToolButton;
add->setIcon(QIcon("images/add.png"));
search->setIcon(QIcon("images/search.png"));
del->setIcon(QIcon("images/del.png"));
mod->setIcon(QIcon("images/mod.png"));
report->setIcon(QIcon("images/report.png"));
retAcc->setIcon(QIcon("images/home.png"));
stati->setIcon(QIcon("images/stat.png"));
quit->setIcon(QIcon("images/quit.png"));
add->addAction(actionAddUser);
search->addAction(actionSearchCall);
del->addAction(actionDelUser);
mod->addAction(actionModUser);
report->addAction(actionReport);
retAcc->addAction(actionretourAccueil);
stati->addAction(actionStat);
quit->addAction(actionQuit);
QVBoxLayout *dockLayout=new QVBoxLayout;
dockLayout->addWidget(add);
dockLayout->addWidget(search);
dockLayout->addWidget(del);
dockLayout->addWidget(mod);
dockLayout->addWidget(report);
dockLayout->addWidget(retAcc);
dockLayout->addWidget(stati);
dockLayout->addWidget(quit);
contenuDock->setLayout(dockLayout);
}
void FenetrePrincipale::goTab(QWidget *page,QString title)
{
int position=m_onglets->indexOf(page);
if(position==-1)
{
m_onglets->addTab(page,title);
}
else
{
m_onglets->setCurrentWidget(page);
};
}
void FenetrePrincipale::goTabint(int position)
{
if(position!=-1)
{
m_onglets->setCurrentIndex(position);
};
}
void FenetrePrincipale::creerPageRapport()
{
goTab(m_search,tr("Search & Report"));
}
void FenetrePrincipale::genPdf(QWidget *view, QString filename)
{
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFileName(filename);
printer.setPaperSize(QPrinter::A4);
printer.setOutputFormat(QPrinter::PdfFormat);
}
To copy to clipboard, switch view to plain text mode
PageAccueil.cpp
#include "PageAccueil.h"
{
model->setTable("callId");
model
->setRelation
(8,
QSqlRelation("destination",
"number",
"type"));
model
->setRelation
(10,
QSqlRelation("user",
"cos",
"firstname"));
model->setHeaderData(0, Qt::Horizontal, tr("Nbr"));
model->setHeaderData(7, Qt::Horizontal, tr("Caller extension"));
model->setHeaderData(1, Qt::Horizontal, tr("Date"));
model->setHeaderData(2, Qt::Horizontal, tr("Hour"));
model->setHeaderData(3, Qt::Horizontal, tr("Duration"));
model->setHeaderData(4, Qt::Horizontal, tr("transfert"));
model->setHeaderData(5, Qt::Horizontal, tr("transfered call?"));
model->setHeaderData(6, Qt::Horizontal, tr("cos used?"));
model->setHeaderData(12, Qt::Horizontal, tr("Destination type"));
model->setHeaderData(11, Qt::Horizontal, tr("Last Name"));
model->setHeaderData(10, Qt::Horizontal, tr("First Name"));
model->select();
}
{
view->setModel(model);
view->setWindowTitle(title);
return view;
}
PageAccueil
::PageAccueil(QWidget *parent
) :{
initializeModel(&model);
layoutPage->addWidget(view);
layoutPage->addWidget(searchBut);
layoutPage->addWidget(reportBut);
setLayout(layoutPage);
connect(searchBut,SIGNAL(clicked()),parent,SLOT(creerPageRapport()));
connect(reportBut,SIGNAL(clicked()),parent,SLOT(creerPageRapport()));
}
#include "PageAccueil.h"
void PageAccueil::initializeModel(QSqlRelationalTableModel *model)
{
model->setTable("callId");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setRelation(8, QSqlRelation("destination", "number", "type"));
model->setRelation(9, QSqlRelation("user", "cos", "name"));
model->setRelation(10, QSqlRelation("user", "cos","firstname"));
model->setHeaderData(0, Qt::Horizontal, tr("Nbr"));
model->setHeaderData(7, Qt::Horizontal, tr("Caller extension"));
model->setHeaderData(1, Qt::Horizontal, tr("Date"));
model->setHeaderData(2, Qt::Horizontal, tr("Hour"));
model->setHeaderData(3, Qt::Horizontal, tr("Duration"));
model->setHeaderData(4, Qt::Horizontal, tr("transfert"));
model->setHeaderData(5, Qt::Horizontal, tr("transfered call?"));
model->setHeaderData(6, Qt::Horizontal, tr("cos used?"));
model->setHeaderData(12, Qt::Horizontal, tr("Destination type"));
model->setHeaderData(11, Qt::Horizontal, tr("Last Name"));
model->setHeaderData(10, Qt::Horizontal, tr("First Name"));
model->select();
}
QTableView *PageAccueil::createView(const QString &title, QSqlTableModel *model)
{
QTableView *view = new QTableView;
view->setModel(model);
view->setItemDelegate(new QSqlRelationalDelegate(view));
view->setWindowTitle(title);
return view;
}
PageAccueil::PageAccueil(QWidget *parent) :
QWidget(parent)
{
QSqlRelationalTableModel model;
initializeModel(&model);
QTableView *view = createView(QObject::tr("Lasts calls"), &model);
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
QPushButton *searchBut=new QPushButton(tr("Search"));
QPushButton *reportBut=new QPushButton(tr("Make a report"));
QVBoxLayout *layoutPage=new QVBoxLayout(this);
layoutPage->addWidget(view);
layoutPage->addWidget(searchBut);
layoutPage->addWidget(reportBut);
setLayout(layoutPage);
connect(searchBut,SIGNAL(clicked()),parent,SLOT(creerPageRapport()));
connect(reportBut,SIGNAL(clicked()),parent,SLOT(creerPageRapport()));
}
To copy to clipboard, switch view to plain text mode
Many thanks.
I forgot the PageAccueil.h
#ifndef PAGEACCUEIL_H
#define PAGEACCUEIL_H
#include <QtGui>
#include <QtSql>
{
Q_OBJECT
public:
explicit PageAccueil
(QWidget *parent
= 0);
private:
};
#endif // PAGEACCUEIL_H
#ifndef PAGEACCUEIL_H
#define PAGEACCUEIL_H
#include <QtGui>
#include <QtSql>
class PageAccueil : public QWidget
{
Q_OBJECT
public:
explicit PageAccueil(QWidget *parent = 0);
private:
void initializeModel(QSqlRelationalTableModel *model);
QTableView *createView(const QString &title, QSqlTableModel *model);
};
#endif // PAGEACCUEIL_H
To copy to clipboard, switch view to plain text mode
Bookmarks