FEHLER:
Code: Alles auswählen
/home/daniel/qt/wh40k/src/main.cpp:20: undefined reference to `MyBoardWDG::MyBoardWDG(QWidget*)'
/home/daniel/qt/wh40k/src/main.cpp:25: undefined reference to `MyBoardWDG::~MyBoardWDG()'
/home/daniel/qt/wh40k/src/main.cpp:25: undefined reference to `MyBoardWDG::~MyBoardWDG()'
collect2: ld gab 1 als Ende-Status zurück
make: *** [../bin/wh40k] Fehler 1
Code: Alles auswählen
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <QtGui>
#include <iostream>
#include "txt_parse.hpp"
#include "menu_fkts.hpp"
#include "MyBoardWDG.h"
#include "Unit_Interface.h"
static const int width = 1065;
static const int height = 475;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyBoardWDG widget;
widget.resize(width, height);
widget.show();
return app.exec();
}Code: Alles auswählen
#ifndef MYBOARDWIDGET_H
#define MYBOARDWIDGET_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <QtGui>
#include <iostream>
#include "txt_parse.hpp"
#include "menu_fkts.hpp"
extern const QString quell_pfad_units = "/home/daniel/qt/wh40k/bin/";
extern const QString quell_pfad_equip = "/home/daniel/qt/wh40k/bin/";
enum armee_bereich //für MyBoardWDG klasse
{
HQ,
Elite,
Standard,
Sturm,
Unterstuetzung
};
class MyBoardWDG : public QWidget
{
Q_OBJECT
private:
QFileDialog *s_filedial;
QFileDialog *o_filedial;
QPrinter *print_me;
QHBoxLayout *mainLayout;
QVBoxLayout *VBox_menu;
QMenuBar *filebar;
QMenu *file;
QMenu *data;
QMenu *help;
QTableWidgetItem *itm_u;
QTableWidgetItem *itm_e;
QTableWidgetItem *itm_p;
int row_sel;
QTabWidget *main_tab;
QTableWidget *armee_list;
QString unit_name;
public:
void create_QHBoxLayout_menu();
MyBoardWDG(QWidget *parent = 0);
virtual ~MyBoardWDG();
QVBoxLayout *armee_list_layout; //layout für tabelle, wird in den konstruktor eingebaut
void create_armee_list_layout();
void addToArmee(QString unit, QString equip, int price, armee_bereich area); //Daten in Tabelle schreiben
QStringList equip;
QStringList *foo_HQ;
QStringList *foo_EL;
QStringList *foo_ST;
QStringList *foo_SD;
QStringList *foo_AP;
QStringList *foo_TR;
int UPrice;
int *U_gPrice;
int *U_mPrice;
public slots:
//Menübar
void s_list();
void o_list();
void print_list();
void setUName(QString T);
void addToArmeeList_HQ();
void addToArmeeList_EL();
void addToArmeeList_ST();
void addToArmeeList_SD();
void addToArmeeList_AP();
void price_multiplier(int row, int column);
void setEquip_HQ();
void setEquip_EL();
void setEquip_ST();
void setEquip_SD();
void setEquip_AP();
void setmPrice(); //hat noch fehler
void delete_row();
void set_row(int row, int column);
};
#endif
Code: Alles auswählen
#include "MyBoardWDG.h"
MyBoardWDG::~MyBoardWDG()
{
}
void MyBoardWDG::setUName(QString T)
{
unit_name = T;
//UPrice = *U_gPrice;
//if(*U_mPrice < 50)
//UPrice = *U_gPrice + (*U_mPrice - *U_gPrice);
std::cout<<"String: "<< unit_name.toStdString() << " gespeichert."<<std::endl;
}
void MyBoardWDG::addToArmeeList_HQ()
{
QString Unit;
QString Equip_List;
int Price;
QString UName = unit_name;
Unit = UName.section("\t", 0, 0);
QStringList equipment = equip;
for(int i = 0; i < equipment.size(); i++)
{
Equip_List += (equipment.at(i) ).section("\t", 0, 0);
if(i < equipment.size() - 1)
Equip_List += ", ";
}
Price = UPrice;
std::cout<<"zur Liste hinzugefuegt."<<std::endl;
addToArmee(Unit, Equip_List, Price, HQ);
}
void MyBoardWDG::addToArmeeList_EL()
{
QString Unit;
QString Equip_List;
int Price;
QString UName = unit_name;
QStringList equipment = equip;
Unit = UName.section("\t", 0, 0);
for(int i = 0; i < equipment.size(); i++)
{
Equip_List += (equipment.at(i) ).section("\t", 0, 0);
if(i < equipment.size() - 1)
Equip_List += ", ";
}
Price = UPrice;
std::cout<<"zur Liste hinzugefuegt."<<std::endl;
addToArmee(Unit, Equip_List, Price, Elite);
}
void MyBoardWDG::addToArmeeList_ST()
{
QString Unit;
QString Equip_List;
int Price;
QString UName = unit_name;
QStringList equipment = equip;
Unit = UName.section("\t", 0, 0);
for(int i = 0; i < equipment.size(); i++)
{
Equip_List += (equipment.at(i) ).section("\t", 0, 0);
if(i < equipment.size() - 1)
Equip_List += ", ";
}
Price = UPrice;
std::cout<<"zur Liste hinzugefuegt."<<std::endl;
addToArmee(Unit, Equip_List, Price, Sturm);
}
void MyBoardWDG::addToArmeeList_SD()
{
QString Unit;
QString Equip_List;
int Price;
QString UName = unit_name;
QStringList equipment = equip;
Unit = UName.section("\t", 0, 0);
for(int i = 0; i < equipment.size(); i++)
{
Equip_List += (equipment.at(i) ).section("\t", 0, 0);
if(i < equipment.size() - 1)
Equip_List += ", ";
}
Price = UPrice;
std::cout<<"zur Liste hinzugefuegt."<<std::endl;
addToArmee(Unit, Equip_List, Price, Standard);
}
void MyBoardWDG::addToArmeeList_AP()
{
QString Unit;
QString Equip_List;
int Price;
QString UName = unit_name;
QStringList equipment = equip;
Unit = UName.section("\t", 0, 0);
for(int i = 0; i < equipment.size(); i++)
{
Equip_List += (equipment.at(i) ).section("\t", 0, 0);
if(i < equipment.size() - 1)
Equip_List += ", ";
}
Price = UPrice;
std::cout<<"zur Liste hinzugefuegt."<<std::endl;
addToArmee(Unit, Equip_List, Price, Unterstuetzung);
}
void MyBoardWDG::price_multiplier(int row, int column)
{
std::cout<<"Daten in Zelle: "<<row<<":"<<column<<" veraendert."<<std::endl;
row_sel = row;
int multi_kosten;
int einzel_preis;
int gruppenpreis;
if(column == 1)
{
std::cout<<"==>Berechne Preis neu."<<std::endl;
QTableWidgetItem *anzahl_item = new QTableWidgetItem();
anzahl_item = armee_list->item(row, column);
int anzahl = (anzahl_item->text() ).toInt(NULL, 10);
multi_kosten = anzahl * UPrice;
QString m_k;
QTableWidgetItem *multi_preis_item = new QTableWidgetItem();
multi_preis_item->setText(m_k.setNum(multi_kosten, 10) );
armee_list->setItem(row, 3, multi_preis_item);
}
}
void MyBoardWDG::setEquip_HQ() {equip = *foo_HQ;} //ganz gefährliches konstrukt!!!!
void MyBoardWDG::setEquip_EL() {equip = *foo_EL;}
void MyBoardWDG::setEquip_ST() {equip = *foo_ST;}
void MyBoardWDG::setEquip_SD() {equip = *foo_SD;}
void MyBoardWDG::setEquip_AP() {equip = *foo_AP;}
void MyBoardWDG::setmPrice() //hat noch fehler
{
UPrice = *U_mPrice;
std::cout<<"Gesamtpreis ist: "<<UPrice<<std::endl;
}
void MyBoardWDG::delete_row()
{
QTableWidgetItem *itm = new QTableWidgetItem();
itm->setText("");
std::cout<<"Loesche Zeile "<<row_sel<<std::endl;
armee_list->setItem(row_sel, 0, itm);
armee_list->setItem(row_sel, 1, itm);
armee_list->setItem(row_sel, 2, itm);
armee_list->setItem(row_sel, 3, itm);
}
void MyBoardWDG::set_row(int row, int column)
{
row_sel = row;
}
/*######################################################################################*/
void MyBoardWDG::s_list()
{
QString f_name;
f_name = s_filedial->getSaveFileName();
QDir dir = s_filedial->directory();
QString str_dir = dir.path();
save_data(str_dir, f_name, armee_list, 28, 4);
}
/*######################################################################################*/
void MyBoardWDG::o_list()
{
QString f_name;
f_name = o_filedial->getOpenFileName();
QDir dir = o_filedial->directory();
QString str_dir = dir.path();
open_data(str_dir, f_name, armee_list);
}
/*######################################################################################*/
void MyBoardWDG::print_list()
{
}
/*######################################################################################*/
MyBoardWDG::MyBoardWDG(QWidget *parent) : QWidget(parent)
{
VBox_menu = new QVBoxLayout(this);
filebar = new QMenuBar(this);
file = new QMenu(tr("&Datei"), filebar);
data = new QMenu(tr("&Bearbeiten"), filebar);
help = new QMenu(tr("&Hilfe"), filebar);
filebar->addMenu(file);
filebar->addMenu(data);
filebar->addMenu(help);
VBox_menu->addWidget(filebar);
create_QHBoxLayout_menu();
VBox_menu->addWidget(filebar);
VBox_menu->addLayout(mainLayout);
//Öffnen/Speichern
s_filedial = new QFileDialog(this);
s_filedial->setAcceptMode(QFileDialog::AcceptSave);
s_filedial->setFilter( "Text (*.wh40k)" );
file->addAction(tr("&Speichern"), this, SLOT(s_list() ) );
o_filedial = new QFileDialog(this, tr("Öffnen"));
o_filedial->setAcceptMode(QFileDialog::AcceptOpen);
o_filedial->setFilter( "Text (*.wh40k)" );
file->addAction(tr("&Öffnen"), this, SLOT(o_list() ) );
//drucken
print_me = new QPrinter(QPrinter::HighResolution);
print_me->setOrientation(QPrinter::Landscape);
print_me->setPageSize(QPrinter::A4);
print_me->setFullPage(true);
print_me->setNumCopies(1);
file->addAction(tr("&Drucken"), this, SLOT(print_list() ) );
}
/*######################################################################################*/
void MyBoardWDG::create_QHBoxLayout_menu()
{
mainLayout = new QHBoxLayout(this);
main_tab = new QTabWidget(this);
unit_interface *HQ = new unit_interface(0, read_plist("units.src", quell_pfad_units, hq));
main_tab->addTab(HQ, tr("HQ") );
QObject::connect(HQ->unit_name_combobox, SIGNAL(activated(QString) ), this, SLOT(setUName(QString) ));
QObject::connect(HQ->addUnit_But, SIGNAL(clicked() ), this, SLOT(addToArmeeList_HQ() ));
QObject::connect(HQ->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setEquip_HQ() ) );
QObject::connect(HQ->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setmPrice() ) );
foo_HQ = HQ->get_EquipList(); //foo_* übergeben...
U_mPrice = HQ->get_mPrice();
unit_interface *EL = new unit_interface(0, read_plist("units.src", quell_pfad_units, elite));
main_tab->addTab(EL, tr("Elite"));
QObject::connect(EL->unit_name_combobox, SIGNAL(activated(QString) ), this, SLOT(setUName(QString) ));
QObject::connect(EL->addUnit_But, SIGNAL(clicked() ), this, SLOT(addToArmeeList_EL() ));
QObject::connect(EL->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setEquip_EL() ) );
QObject::connect(EL->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setmPrice() ) );
foo_EL = EL->get_EquipList();
U_mPrice = HQ->get_mPrice();
unit_interface *ST = new unit_interface(0, read_plist("units.src", quell_pfad_units, sturm));
main_tab->addTab(ST, tr("Sturm"));
QObject::connect(ST->unit_name_combobox, SIGNAL(activated(QString) ), this, SLOT(setUName(QString) ));
QObject::connect(ST->addUnit_But, SIGNAL(clicked() ), this, SLOT(addToArmeeList_ST() ));
QObject::connect(ST->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setEquip_ST() ) );
QObject::connect(ST->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setmPrice() ) );
foo_ST = ST->get_EquipList();
U_mPrice = HQ->get_mPrice();
unit_interface *SD = new unit_interface(0, read_plist("units.src", quell_pfad_units, standard));
main_tab->addTab(SD, tr("Standard"));
QObject::connect(SD->unit_name_combobox, SIGNAL(activated(QString) ), this, SLOT(setUName(QString) ));
QObject::connect(SD->addUnit_But, SIGNAL(clicked() ), this, SLOT(addToArmeeList_SD() ));
QObject::connect(SD->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setEquip_SD() ) );
QObject::connect(SD->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setmPrice() ) );
foo_SD = SD->get_EquipList();
U_mPrice = HQ->get_mPrice();
unit_interface *AP = new unit_interface(0, read_plist("units.src", quell_pfad_units, approvement));
main_tab->addTab(AP, tr("Unterstuetzung"));
QObject::connect(AP->unit_name_combobox, SIGNAL(activated(QString) ), this, SLOT(setUName(QString) ));
QObject::connect(AP->addUnit_But, SIGNAL(clicked() ), this, SLOT(addToArmeeList_AP() ));
QObject::connect(AP->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setEquip_AP() ) );
QObject::connect(AP->unit_equipment_list, SIGNAL(itemSelectionChanged() ), this, SLOT(setmPrice() ) );
foo_AP = AP->get_EquipList();
U_mPrice = HQ->get_mPrice();
unit_interface *TR = new unit_interface(0, read_plist("units.src", quell_pfad_units, transport));
main_tab->addTab(TR, tr("Transport"));
main_tab->setFixedSize(400, 475);
create_armee_list_layout();
QObject::connect(armee_list, SIGNAL(cellChanged(int, int)), this, SLOT(price_multiplier(int, int)));
//aktuelle Zeile benutzen um einheiten in die armeeliste einzufügen (siehe addToArmee)
QObject::connect(armee_list, SIGNAL(cellClicked(int, int)), this, SLOT(set_row(int, int)));
mainLayout->addWidget(main_tab);
mainLayout->addLayout(armee_list_layout);
}
/*######################################################################################*/
void MyBoardWDG::create_armee_list_layout()
{
armee_list_layout = new QVBoxLayout();
armee_list = new QTableWidget(28, 4);
armee_list->setColumnWidth(0, 90);
armee_list->setColumnWidth(1, 30);
armee_list->setColumnWidth(2, 400);
armee_list->setColumnWidth(3, 50);
for(int i = 0; i < 28; i++) armee_list->setRowHeight(i, 18);
armee_list->setItem(0, 0, new QTableWidgetItem(tr("Typ:")));
armee_list->setItem(0, 1, new QTableWidgetItem(tr("A:")));
armee_list->setItem(0, 2, new QTableWidgetItem(tr("Ausruestung:")));
armee_list->setItem(0, 3, new QTableWidgetItem(tr("Punkte:")));
armee_list->setItem(1, 0, new QTableWidgetItem(tr("HQ:")));
armee_list->setItem(6, 0, new QTableWidgetItem(tr("Elite:")));
armee_list->setItem(11, 0, new QTableWidgetItem(tr("Standard:")));
armee_list->setItem(19, 0, new QTableWidgetItem(tr("Sturm:")));
armee_list->setItem(24, 0, new QTableWidgetItem(tr("Unterstuetzung:")));
QPushButton *del_Butt = new QPushButton("Lösche Zeile", this);
del_Butt->setFlat(true);
QObject::connect(del_Butt, SIGNAL(pressed() ), this, SLOT(delete_row() ) );
armee_list_layout->addWidget(armee_list);
armee_list_layout->addWidget(del_Butt);
}
/*######################################################################################*/
void MyBoardWDG::addToArmee(QString unit, QString equip, int price, armee_bereich area)
{
QString str_price = QString::number(price);
itm_u = new QTableWidgetItem(unit);
itm_e = new QTableWidgetItem(equip);
itm_p = new QTableWidgetItem(str_price);
std::cout<<"Markierte Zeile: "<<row_sel<<std::endl;
if(area == HQ && row_sel < 5)
{
armee_list->setItem(row_sel, 0, itm_u);
armee_list->setItem(row_sel, 2, itm_e);
armee_list->setItem(row_sel, 3, itm_p);
}
if(area == Elite && row_sel < 10 && row_sel >= 7)
{
armee_list->setItem(row_sel, 0, itm_u);
armee_list->setItem(row_sel, 2, itm_e);
armee_list->setItem(row_sel, 3, itm_p);
}
if(area == Standard && row_sel < 18 && row_sel >= 12)
{
armee_list->setItem(row_sel, 0, itm_u);
armee_list->setItem(row_sel, 2, itm_e);
armee_list->setItem(row_sel, 3, itm_p);
}
if(area == Sturm && row_sel < 23 && row_sel >= 20)
{
armee_list->setItem(row_sel, 0, itm_u);
armee_list->setItem(row_sel, 2, itm_e);
armee_list->setItem(row_sel, 3, itm_p);
}
if(area == Unterstuetzung && row_sel < 29 && row_sel >= 25)
{
armee_list->setItem(row_sel, 0, itm_u);
armee_list->setItem(row_sel, 2, itm_e);
armee_list->setItem(row_sel, 3, itm_p);
}
}
#include "MyBoardWDG.moc"