Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Solved]No matching function for call to TerritoryShowBox
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1198

PostPosted: Tue May 29, 2018 6:38 am    Post subject: [Solved]No matching function for call to TerritoryShowBox Reply with quote

Hello, today, i have problem with my program and i don't found my error... It's Qt program.

Log:
Code:
../ZTM/TerritorySummaryBox.cpp: In constructor ‘TerritorySummaryBox::TerritorySummaryBox(QWidget*)’:
../ZTM/TerritorySummaryBox.cpp:9:75: error: no matching function for call to ‘TerritoryShowBox::TerritoryShowBox()’
 TerritorySummaryBox::TerritorySummaryBox(QWidget *parent) : QDialog(parent)
                                                                           ^
In file included from ../ZTM/TerritorySummaryBox.h:10:0,
                 from ../ZTM/TerritorySummaryBox.cpp:1:
../ZTM/TerritoryShowBox.h:14:5: note: candidate: TerritoryShowBox::TerritoryShowBox(QWidget*)
     TerritoryShowBox(QWidget *parent);
     ^~~~~~~~~~~~~~~~
../ZTM/TerritoryShowBox.h:14:5: note:   candidate expects 1 argument, 0 provided
make: *** [Makefile:849: TerritorySummaryBox.o] Error 1
make: *** Waiting for unfinished jobs....
08:27:18: Le processus "/usr/bin/make" s'est terminé avec le code 2.
Erreur lors de la compilation/déploiement du projet ZTM (kit : Desktop)
When executing step "Make"


TerritoryShowBox header

Code:
#ifndef TERRITORYSHOWBOX_H
#define TERRITORYSHOWBOX_H

#include <QDialog>
#include <QTabWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QGroupBox>

class TerritoryShowBox : public QDialog
{
 Q_OBJECT
public:
    TerritoryShowBox(QWidget *parent);
    void set_territory_id(int id);
private:
    QTabWidget tabs;
    QPushButton first_print_button;
    QPushButton second_print_button;
    QPushButton end_button;
    QWidget first_picture_tab;
    QWidget second_picture_tab;
    QGridLayout first_picture_layout;
    QGridLayout second_picture_layout;
    QGroupBox first_picture_box;
    QGroupBox second_picture_box;
    QGridLayout first_picture_tab_layout;
    QGridLayout second_picture_tab_layout;
    QGridLayout layout;
    void initialize();
    void create_first_print_button();
    void create_second_print_button();
    void create_end_button();
    void create_buttons();
    void create_first_picture_layout();
    void create_second_picture_layout();
    void create_first_picture_tab_layout();
    void create_second_picture_tab_layout();
    void create_layout();
    void create_layouts();
    void create_first_picture_box();
    void create_second_picture_box();
    void create_group_boxs();
    void create_tabs();
    void connect_buttons();
};

#endif


TerritoryShowBox.cpp
Code:
#include "TerritoryShowBox.h"

TerritoryShowBox::TerritoryShowBox(QWidget *parent) : QDialog(parent)
{
 initialize();
 create_buttons();
 create_layouts();
 create_group_boxs();
 create_tabs();
 connect_buttons();
}

void TerritoryShowBox::initialize()
{
 setWindowTitle("Aperçu");
 setWindowFlags(Qt::Dialog | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
 setLayout(&layout);
}

void TerritoryShowBox::create_first_print_button()
{
 first_print_button.setText("Imprimer");
 first_print_button.setToolTip("Imprimer la face recto du territoire");
}

void TerritoryShowBox::create_second_print_button()
{
 second_print_button.setText("Imprimer");
 second_print_button.setToolTip("Imprimer la face verso du territoire");
}

void TerritoryShowBox::create_end_button()
{
 end_button.setText("Fermer");
 end_button.setToolTip("Fermer l'aperçu du territoire");
}

void TerritoryShowBox::create_buttons()
{
 create_first_print_button();
 create_second_print_button();
 create_end_button();
}

void TerritoryShowBox::create_first_picture_layout()
{
 //first_picture_layout.addWidget(&first_picture_box,0,0,1,2);
}

void TerritoryShowBox::create_second_picture_layout()
{
 //second_picture_layout.addWidget(&second_picture_box,0,0,1,2);
}

void TerritoryShowBox::create_first_picture_tab_layout()
{
 //first_picture_tab_layout.addWidget(&first_picture_box);
}

void TerritoryShowBox::create_second_picture_tab_layout()
{
 //second_picture_tab_layout.addWidget(&second_picture_box);
}

void TerritoryShowBox::create_layout()
{
 layout.addWidget(&tabs,0,0,1,4);
 layout.addWidget(&end_button,1,3,1,1);
}

void TerritoryShowBox::create_layouts()
{
 create_first_picture_layout();
 create_second_picture_layout();
 create_first_picture_tab_layout();
 create_second_picture_tab_layout();
 create_layout();
}

void TerritoryShowBox::create_first_picture_box()
{
 first_picture_box.setTitle("Aperçu du territoire face recto");
 first_picture_box.setLayout(&first_picture_layout);
}

void TerritoryShowBox::create_second_picture_box()
{
 second_picture_box.setTitle("Aperçu du territoire face verso");
 second_picture_box.setLayout(&second_picture_layout);
}

void TerritoryShowBox::create_group_boxs()
{
 create_first_picture_box();
 create_second_picture_box();
}

void TerritoryShowBox::create_tabs()
{
 first_picture_tab.setLayout(&first_picture_tab_layout);
 second_picture_tab.setLayout(&second_picture_tab_layout);
 tabs.addTab(&first_picture_tab,"Recto");
 tabs.addTab(&second_picture_tab,"Verso");
}

void TerritoryShowBox::connect_buttons()
{
 connect(&end_button,SIGNAL(clicked()),this,SLOT(close()));
}

void TerritoryShowBox::set_territory_id(int id)
{

}


TerritorySummaryBox header

Code:
#ifndef TERRITORYSUMMARYBOX_H
#define TERRITORYSUMMARYBOX_H

#include <QDialog>
#include <QGroupBox>
#include <QTextEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QGridLayout>
#include "TerritoryShowBox.h"

class TerritorySummaryBox : public QDialog
{
Q_OBJECT
public:
    TerritorySummaryBox(QWidget *parent);
    void set_territory_id(int id);
public slots:
    void open_territory_show_box();
private:
    QGroupBox box;
    QTextEdit summary_text;
    QPushButton show_button;
    QPushButton close_button;
    QHBoxLayout box_layout;
    QGridLayout layout;
    TerritoryShowBox territory_show_box;
    void initialize();
    void initialize_pointers();
    void create_group_box();
    void create_summary_text();
    void create_show_button();
    void create_close_button();
    void create_buttons();
    void create_box_layout();
    void create_layout();
    void create_layouts();
    void connect_buttons();
};

#endif // TERRITORYSUMMARYBOX_H



TerritorySummaryBox.cpp

Code:
#include "TerritorySummaryBox.h"
#include "Territory.h"
#include "LogEvent.h"
#include "ZTM.h"

using ZTM::load_territory_data;
using ZTM::date_string;

TerritorySummaryBox::TerritorySummaryBox(QWidget *parent) : QDialog(parent)
{
 initialize();
 initialize_pointers();
 create_group_box();
 create_summary_text();
 create_buttons();
 create_layouts();
 connect_buttons();
}

void TerritorySummaryBox::initialize()
{
 setWindowTitle("Détail");
 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint);
 setLayout(&layout);
}

void TerritorySummaryBox::initialize_pointers()
{
 //territory_show_box = new TerritoryShowBox(this);
}

void TerritorySummaryBox::create_group_box()
{
 box.setLayout(&box_layout);
}

void TerritorySummaryBox::create_summary_text()
{
 summary_text.setReadOnly(true);
}

void TerritorySummaryBox::create_show_button()
{
 show_button.setText("Aperçu");
 show_button.setToolTip("Afficher l'aperçu du territoire");
}

void TerritorySummaryBox::create_close_button()
{
 close_button.setText("Fermer");
 close_button.setToolTip("Fermer les détails de ce territoire");
}

void TerritorySummaryBox::create_buttons()
{
 create_show_button();
 create_close_button();
}

void TerritorySummaryBox::create_box_layout()
{
 box_layout.addWidget(&summary_text);
}

void TerritorySummaryBox::create_layout()
{
 layout.addWidget(&box,0,0,1,5);
 layout.addWidget(&show_button,4,0,1,2);
 layout.addWidget(&close_button,4,4,1,1);
}

void TerritorySummaryBox::create_layouts()
{
 create_box_layout();
 create_layout();
}

void TerritorySummaryBox::set_territory_id(int id)
{
 summary_text.clear();
 box.setTitle("Territoire n°"+QString::number(id));
 Territory data = load_territory_data(id);
 QString summary;
 QString available;
 QString last_out;
 QString last_change_assignment;
 QString last_enter;
 if (data.last_out_date().isNull())
 {
  last_out = "Aucune";
 }
 else
 {
  last_out = "Le "+date_string(data.last_out_date().date())+" à "+data.last_out_date().time().toString();
 }
 if (data.last_change_assignment_date().isNull())
 {
  last_change_assignment = "Aucun";
 }
 else
 {
  last_change_assignment = "Le "+date_string(data.last_change_assignment_date().date())+" à "+data.last_change_assignment_date().time().toString();
 }
 if (data.last_enter_date().isNull())
 {
  last_enter = "Aucune";
 }
 else
 {
  last_enter = "Le "+date_string(data.last_enter_date().date())+" à "+data.last_enter_date().time().toString();
 }
 if (data.available())
 {
  available = "<font color=\"#00dd00\"><b>Oui</b></font>";
 }
 else
 {
  available = "<font color=\"#ff0000\"><b>Non</b></font>";
 }
 summary.append("<font color=\"#009fff\"><u><i><b>Informations</b></i></u></font><br>");
 summary.append("<b>-Lieu: <font color=\"#0000ff\">"+data.name()+"</font></b><br>");
 summary.append("<b>-Dernière sortie:</b> "+last_out+"<br>");
 summary.append("<b>-Dernier réassignement:</b> "+last_change_assignment+"<br>");
 summary.append("<b>-Dernière rentrée:</b> "+last_enter+"<br>");
 summary.append("<b>-Disponible:</b> "+available+"<br><br>");
 if (!data.events().isEmpty())
 {
  summary.append("<font color=\"#df0080\"><u><i><b>Historique</b></i></u></font><br>");
  foreach(TerritoryEvent event, data.events())
  {
   summary.append(event.list_name());
  }
 }
 summary_text.setHtml(summary);
}

void TerritorySummaryBox::connect_buttons()
{
 QObject::connect(&close_button,SIGNAL(clicked()),this,SLOT(accept()));
 QObject::connect(&show_button,SIGNAL(clicked()),this,SLOT(open_territory_show_box()));
}

void TerritorySummaryBox::open_territory_show_box()
{
 //territory_show_box->set_territory_id(id.toInt());
 //territory_show_box->exec();
}


Last edited by Fulgurance on Tue May 29, 2018 11:40 am; edited 1 time in total
Back to top
View user's profile Send private message
Genone
Retired Dev
Retired Dev


Joined: 14 Mar 2003
Posts: 9522
Location: beyond the rim

PostPosted: Tue May 29, 2018 7:47 am    Post subject: Reply with quote

The problem is that your TerritorySummaryBox has a TerritoryShowBox member that isn't explicitly initialized in the constructor, so the compiler is calling the default constructor. But as you defined a constructor with a mandatory parameter there is no default constructor defined for TerritoryShowBox.

Two possible quick fixes:
1) change the declaration in territoryshowbox.h from
Code:
TerritoryShowBox(QWidget *parent);

to
Code:
TerritoryShowBox(QWidget *parent = 0);


2) explicitly initialize the member in the TerritorySummaryBox constructor by changing
Code:
TerritorySummaryBox::TerritorySummaryBox(QWidget *parent) : QDialog(parent)

to
Code:
TerritorySummaryBox::TerritorySummaryBox(QWidget *parent) : QDialog(parent), territory_show_box(0)



Or you actually change it into a pointer which the commented code in the relevant member functions already expect.
Back to top
View user's profile Send private message
Fulgurance
Veteran
Veteran


Joined: 15 Feb 2017
Posts: 1198

PostPosted: Tue May 29, 2018 10:35 am    Post subject: Reply with quote

Solved ! I have just ommited * for pointer on header.... stupid error
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum