QMainWindow Model Prob

Verschiedenes zu Qt
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

QMainWindow Model Prob

Beitrag von XxM4ST3RxX »

Hallo ich wollte mal fragen wieso mein QSqlRelationalTableModel in einem QMainWindow als Klassenvariable nicht läuft ... ? wenn ich es in einen Slot einfüge dann klappt es aber nicht als Klassenvariable. Bei QWidget geht es aber ich brauche das QMainWindow.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

WAS?
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

also wenn ich in einer QMainWindow Instanz im Konstruktor ein Model erstelle bleibt es immer leer wieso ?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

evtl weil es nach verlassen des c´tors keinen scope mehr hat?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Und ohne Code kann man sowieso nur raten, was du eigentlich machst...
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

jepp das auch richtig.... ich gehe mal davon aus das du nen tableview hast dem du nen model zuweisen willst.

sobald das model seinen scope verliert wird auch nix mehr angezeigt
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

ähm ok hier ist der Code und die Variable bleibt im Scope den es ist ja ne Membervariable das habe ich oben schon mal geschrieben.

cshareit.h

Code: Alles auswählen

#ifndef CSHAREIT_H
#define CSHAREIT_H

#include <QtGui/QMainWindow>
#include <QtSql>
#include <QSettings>
#include <QHeaderView>
#include <QMessageBox>
#include "ui_cshareit.h"
#include "cclasses.h"
#include "cpupils.h"
#include "ctypes.h"
#include "cbooks.h"
#include "cshares.h"
#include "csettings.h"
#include "caboutshareit.h"

/**
 * Share It Hauptfenster
 */
class CShareIt: public QMainWindow
{
	Q_OBJECT

public:
	CShareIt(QWidget *parent = 0);
	~CShareIt();

private:
	Ui::CShareItClass ui;
	QSqlRelationalTableModel * returnModel;
	QSettings settings;

private slots:
	void showClasses();
	void showPupils();
	void showTypes();
	void showBooks();
	void showShares();
	void showSettings();
	void showAboutShareIt();
	void changedAction(int index);
	void submit();
};

#endif // CSHAREIT_H
cshareit.cpp

Code: Alles auswählen

#include "cshareit.h"

/**
 * Konstruktor führt Aktionen aus die beim erstellen des Objekts
 * gemacht werden müssen.
 */
CShareIt::CShareIt(QWidget *parent) :
	QMainWindow(parent),
	returnModel(new QSqlRelationalTableModel),
	settings("settings.ini", QSettings::IniFormat)
{
	ui.setupUi(this);

	connect(ui.adminClasses, SIGNAL(triggered()),
			this, SLOT(showClasses()));
	connect(ui.adminPupils, SIGNAL(triggered()),
			this, SLOT(showPupils()));
	connect(ui.adminTypes, SIGNAL(triggered()),
			this, SLOT(showTypes()));
	connect(ui.adminBooks, SIGNAL(triggered()),
			this, SLOT(showBooks()));
	connect(ui.adminShares, SIGNAL(triggered()),
			this, SLOT(showShares()));
	connect(ui.systemSettings, SIGNAL(triggered()),
			this, SLOT(showSettings()));
	connect(ui.helpAboutQt, SIGNAL(triggered()),
			qApp, SLOT(aboutQt()));
	connect(ui.helpAboutShareIt, SIGNAL(triggered()),
			this, SLOT(showAboutShareIt()));
	connect(ui.twActions, SIGNAL(currentChanged(int)),
			this, SLOT(changedAction(int)));

	returnModel->setTable("shares");
	returnModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
	returnModel->setHeaderData(0, Qt::Horizontal, tr("ID"));
	returnModel->setHeaderData(1, Qt::Horizontal, tr("Schüler"));
	returnModel->setHeaderData(2, Qt::Horizontal, tr("Buch"));
	returnModel->setHeaderData(3, Qt::Horizontal, tr("Ausgabe"));
	returnModel->setHeaderData(4, Qt::Horizontal, tr("Rückgabe"));
	returnModel->setRelation(1, QSqlRelation("pupils", "id", "name"));
	returnModel->setRelation(2, QSqlRelation("books", "id", "title"));
	returnModel->select();

	ui.tvReturn->setModel(returnModel);
	ui.tvReturn->hideColumn(0);
	ui.tvReturn->header()->setResizeMode(QHeaderView::Stretch);
	ui.tvReturn->setItemDelegate(new QSqlRelationalDelegate(ui.tvReturn));
}

/**
 * Destruktor führt die Aktionen aus die für das Aufräumen zuständig sind.
 */
CShareIt::~CShareIt()
{

}

/**
 * TODO
 */
void CShareIt::showClasses()
{
	CClasses * cClasses = new CClasses;
	cClasses->show();
}

/**
 * TODO
 */
void CShareIt::showPupils()
{
	CPupils * cPupils = new CPupils;
	cPupils->show();
}

/**
 * TODO
 */
void CShareIt::showTypes()
{
	CTypes * cTypes = new CTypes;
	cTypes->show();
}

/**
 * TODO
 */
void CShareIt::showBooks()
{
	CBooks * cBooks = new CBooks;
	cBooks->show();
}

/**
 * TODO
 */
void CShareIt::showShares()
{
	CShares * cShares = new CShares;
	cShares->show();
}

/**
 * TODO
 */
void CShareIt::showSettings()
{
	CSettings * cSettings = new CSettings;
	cSettings->show();
}

/**
 * TODO
 */
void CShareIt::showAboutShareIt()
{
	CAboutShareIt * cAboutShareIt = new CAboutShareIt;
	cAboutShareIt->show();
}

/**
 * Setzt die Einstellungen für die gewählte Aktion.
 * @param index Indexwert der gewählten Aktion.
 */
void CShareIt::changedAction(int index)
{
	switch(index)
	{
	case 0:
		ui.pbSubmit->setText("Ausgabe");
		ui.pbSubmit->setHidden(false);
		break;
	case 1:
		ui.pbSubmit->setText("Rückgabe");
		ui.pbSubmit->setHidden(false);
		break;
	default:
		ui.pbSubmit->setHidden(true);
		break;
	}
}

/**
 * TODO
 */
void CShareIt::submit()
{

}
ui_cshareit.h

Code: Alles auswählen

/********************************************************************************
** Form generated from reading ui file 'cshareit.ui'
**
** Created: Wed 26. Nov 15:14:00 2008
**      by: Qt User Interface Compiler version 4.4.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_CSHAREIT_H
#define UI_CSHAREIT_H

#include <QtCore/QDate>
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QCheckBox>
#include <QtGui/QComboBox>
#include <QtGui/QDateEdit>
#include <QtGui/QFormLayout>
#include <QtGui/QGridLayout>
#include <QtGui/QGroupBox>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QStatusBar>
#include <QtGui/QTabWidget>
#include <QtGui/QTreeView>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_CShareItClass
{
public:
    QAction *adminClasses;
    QAction *adminPupils;
    QAction *adminTypes;
    QAction *adminBooks;
    QAction *adminShares;
    QAction *systemSettings;
    QAction *helpAboutQt;
    QAction *helpAboutShareIt;
    QWidget *centralwidget;
    QVBoxLayout *verticalLayout_4;
    QTabWidget *twActions;
    QWidget *_get;
    QVBoxLayout *verticalLayout_5;
    QGroupBox *gbGetPupil;
    QHBoxLayout *horizontalLayout_5;
    QGroupBox *gbGetPupilFilter;
    QVBoxLayout *verticalLayout;
    QFormLayout *formLayout_2;
    QLabel *lGetPupilFilterName;
    QLabel *lGetPupilFilterClass;
    QLabel *lGetPupilFilterBday;
    QLineEdit *leGetPupilFilterName;
    QComboBox *cbGetPupilFilterClass;
    QDateEdit *deGetPupilFilterBday;
    QHBoxLayout *horizontalLayout_4;
    QSpacerItem *horizontalSpacer_3;
    QPushButton *pbGetPupilFilter;
    QPushButton *pbGetPupilFilterReset;
    QGroupBox *gbGetPupilResult;
    QGridLayout *gridLayout;
    QTreeView *tvGetPupil;
    QGroupBox *gbGetBook;
    QHBoxLayout *horizontalLayout_7;
    QGroupBox *gbGetBookFilter;
    QVBoxLayout *verticalLayout_3;
    QFormLayout *formLayout_3;
    QLabel *lGetBookFilterTitle;
    QLabel *lGetBookFilterVerlag;
    QLabel *lGetBookFilterIsbn;
    QLabel *lGetBookFilterType;
    QLineEdit *leGetBookFilterTitle;
    QLineEdit *leGetBookFilterVerlag;
    QLineEdit *leGetBookFilterIsbn;
    QComboBox *cbGetBookFilterType;
    QHBoxLayout *horizontalLayout_6;
    QSpacerItem *horizontalSpacer_4;
    QPushButton *pbGetBookFilter;
    QPushButton *pbGetBookFilterReset;
    QGroupBox *gbGetBookResult;
    QGridLayout *gridLayout_3;
    QTreeView *tvGetBook;
    QWidget *_return;
    QHBoxLayout *horizontalLayout_2;
    QGroupBox *gbReturnFilter;
    QVBoxLayout *verticalLayout_2;
    QFormLayout *formLayout;
    QLabel *lReturnFilterPupil;
    QLabel *lReturnFilterBook;
    QLabel *lReturnFilterGet;
    QLabel *lReturnFilterReturn;
    QCheckBox *cbReturnDue;
    QComboBox *cbReturnFilterPupil;
    QComboBox *cbReturnFilterBook;
    QDateEdit *deReturnFilterGet;
    QDateEdit *deReturnFilterReturn;
    QHBoxLayout *horizontalLayout_3;
    QSpacerItem *horizontalSpacer_2;
    QPushButton *pbReturnFilter;
    QPushButton *pbReturnFilterReset;
    QGroupBox *gbReturnResults;
    QGridLayout *gridLayout_2;
    QTreeView *tvReturn;
    QWidget *_statics;
    QHBoxLayout *horizontalLayout;
    QSpacerItem *horizontalSpacer;
    QPushButton *pbSubmit;
    QMenuBar *menubar;
    QMenu *menuAdministration;
    QMenu *menuSystem;
    QMenu *menuHilfe;
    QStatusBar *statusbar;

    void setupUi(QMainWindow *CShareItClass)
    {
    if (CShareItClass->objectName().isEmpty())
        CShareItClass->setObjectName(QString::fromUtf8("CShareItClass"));
    CShareItClass->resize(800, 600);
    adminClasses = new QAction(CShareItClass);
    adminClasses->setObjectName(QString::fromUtf8("adminClasses"));
    adminPupils = new QAction(CShareItClass);
    adminPupils->setObjectName(QString::fromUtf8("adminPupils"));
    adminTypes = new QAction(CShareItClass);
    adminTypes->setObjectName(QString::fromUtf8("adminTypes"));
    adminBooks = new QAction(CShareItClass);
    adminBooks->setObjectName(QString::fromUtf8("adminBooks"));
    adminShares = new QAction(CShareItClass);
    adminShares->setObjectName(QString::fromUtf8("adminShares"));
    systemSettings = new QAction(CShareItClass);
    systemSettings->setObjectName(QString::fromUtf8("systemSettings"));
    helpAboutQt = new QAction(CShareItClass);
    helpAboutQt->setObjectName(QString::fromUtf8("helpAboutQt"));
    helpAboutShareIt = new QAction(CShareItClass);
    helpAboutShareIt->setObjectName(QString::fromUtf8("helpAboutShareIt"));
    centralwidget = new QWidget(CShareItClass);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    verticalLayout_4 = new QVBoxLayout(centralwidget);
    verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4"));
    twActions = new QTabWidget(centralwidget);
    twActions->setObjectName(QString::fromUtf8("twActions"));
    _get = new QWidget();
    _get->setObjectName(QString::fromUtf8("_get"));
    verticalLayout_5 = new QVBoxLayout(_get);
    verticalLayout_5->setObjectName(QString::fromUtf8("verticalLayout_5"));
    gbGetPupil = new QGroupBox(_get);
    gbGetPupil->setObjectName(QString::fromUtf8("gbGetPupil"));
    horizontalLayout_5 = new QHBoxLayout(gbGetPupil);
    horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
    gbGetPupilFilter = new QGroupBox(gbGetPupil);
    gbGetPupilFilter->setObjectName(QString::fromUtf8("gbGetPupilFilter"));
    gbGetPupilFilter->setMinimumSize(QSize(250, 0));
    gbGetPupilFilter->setMaximumSize(QSize(250, 16777215));
    verticalLayout = new QVBoxLayout(gbGetPupilFilter);
    verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
    formLayout_2 = new QFormLayout();
    formLayout_2->setObjectName(QString::fromUtf8("formLayout_2"));
    lGetPupilFilterName = new QLabel(gbGetPupilFilter);
    lGetPupilFilterName->setObjectName(QString::fromUtf8("lGetPupilFilterName"));

    formLayout_2->setWidget(0, QFormLayout::LabelRole, lGetPupilFilterName);

    lGetPupilFilterClass = new QLabel(gbGetPupilFilter);
    lGetPupilFilterClass->setObjectName(QString::fromUtf8("lGetPupilFilterClass"));

    formLayout_2->setWidget(1, QFormLayout::LabelRole, lGetPupilFilterClass);

    lGetPupilFilterBday = new QLabel(gbGetPupilFilter);
    lGetPupilFilterBday->setObjectName(QString::fromUtf8("lGetPupilFilterBday"));

    formLayout_2->setWidget(2, QFormLayout::LabelRole, lGetPupilFilterBday);

    leGetPupilFilterName = new QLineEdit(gbGetPupilFilter);
    leGetPupilFilterName->setObjectName(QString::fromUtf8("leGetPupilFilterName"));

    formLayout_2->setWidget(0, QFormLayout::FieldRole, leGetPupilFilterName);

    cbGetPupilFilterClass = new QComboBox(gbGetPupilFilter);
    cbGetPupilFilterClass->setObjectName(QString::fromUtf8("cbGetPupilFilterClass"));

    formLayout_2->setWidget(1, QFormLayout::FieldRole, cbGetPupilFilterClass);

    deGetPupilFilterBday = new QDateEdit(gbGetPupilFilter);
    deGetPupilFilterBday->setObjectName(QString::fromUtf8("deGetPupilFilterBday"));
    deGetPupilFilterBday->setMinimumDate(QDate(1900, 12, 31));
    deGetPupilFilterBday->setCalendarPopup(true);
    deGetPupilFilterBday->setDate(QDate(1900, 12, 31));

    formLayout_2->setWidget(2, QFormLayout::FieldRole, deGetPupilFilterBday);


    verticalLayout->addLayout(formLayout_2);

    horizontalLayout_4 = new QHBoxLayout();
    horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
    horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    horizontalLayout_4->addItem(horizontalSpacer_3);

    pbGetPupilFilter = new QPushButton(gbGetPupilFilter);
    pbGetPupilFilter->setObjectName(QString::fromUtf8("pbGetPupilFilter"));

    horizontalLayout_4->addWidget(pbGetPupilFilter);

    pbGetPupilFilterReset = new QPushButton(gbGetPupilFilter);
    pbGetPupilFilterReset->setObjectName(QString::fromUtf8("pbGetPupilFilterReset"));

    horizontalLayout_4->addWidget(pbGetPupilFilterReset);


    verticalLayout->addLayout(horizontalLayout_4);


    horizontalLayout_5->addWidget(gbGetPupilFilter);

    gbGetPupilResult = new QGroupBox(gbGetPupil);
    gbGetPupilResult->setObjectName(QString::fromUtf8("gbGetPupilResult"));
    gridLayout = new QGridLayout(gbGetPupilResult);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
    tvGetPupil = new QTreeView(gbGetPupilResult);
    tvGetPupil->setObjectName(QString::fromUtf8("tvGetPupil"));
    tvGetPupil->setEditTriggers(QAbstractItemView::NoEditTriggers);
    tvGetPupil->setRootIsDecorated(false);
    tvGetPupil->setSortingEnabled(true);
    tvGetPupil->setAllColumnsShowFocus(true);

    gridLayout->addWidget(tvGetPupil, 0, 0, 1, 1);


    horizontalLayout_5->addWidget(gbGetPupilResult);


    verticalLayout_5->addWidget(gbGetPupil);

    gbGetBook = new QGroupBox(_get);
    gbGetBook->setObjectName(QString::fromUtf8("gbGetBook"));
    horizontalLayout_7 = new QHBoxLayout(gbGetBook);
    horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
    gbGetBookFilter = new QGroupBox(gbGetBook);
    gbGetBookFilter->setObjectName(QString::fromUtf8("gbGetBookFilter"));
    gbGetBookFilter->setMinimumSize(QSize(250, 0));
    gbGetBookFilter->setMaximumSize(QSize(250, 16777215));
    verticalLayout_3 = new QVBoxLayout(gbGetBookFilter);
    verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
    formLayout_3 = new QFormLayout();
    formLayout_3->setObjectName(QString::fromUtf8("formLayout_3"));
    lGetBookFilterTitle = new QLabel(gbGetBookFilter);
    lGetBookFilterTitle->setObjectName(QString::fromUtf8("lGetBookFilterTitle"));

    formLayout_3->setWidget(0, QFormLayout::LabelRole, lGetBookFilterTitle);

    lGetBookFilterVerlag = new QLabel(gbGetBookFilter);
    lGetBookFilterVerlag->setObjectName(QString::fromUtf8("lGetBookFilterVerlag"));

    formLayout_3->setWidget(1, QFormLayout::LabelRole, lGetBookFilterVerlag);

    lGetBookFilterIsbn = new QLabel(gbGetBookFilter);
    lGetBookFilterIsbn->setObjectName(QString::fromUtf8("lGetBookFilterIsbn"));

    formLayout_3->setWidget(2, QFormLayout::LabelRole, lGetBookFilterIsbn);

    lGetBookFilterType = new QLabel(gbGetBookFilter);
    lGetBookFilterType->setObjectName(QString::fromUtf8("lGetBookFilterType"));

    formLayout_3->setWidget(3, QFormLayout::LabelRole, lGetBookFilterType);

    leGetBookFilterTitle = new QLineEdit(gbGetBookFilter);
    leGetBookFilterTitle->setObjectName(QString::fromUtf8("leGetBookFilterTitle"));

    formLayout_3->setWidget(0, QFormLayout::FieldRole, leGetBookFilterTitle);

    leGetBookFilterVerlag = new QLineEdit(gbGetBookFilter);
    leGetBookFilterVerlag->setObjectName(QString::fromUtf8("leGetBookFilterVerlag"));

    formLayout_3->setWidget(1, QFormLayout::FieldRole, leGetBookFilterVerlag);

    leGetBookFilterIsbn = new QLineEdit(gbGetBookFilter);
    leGetBookFilterIsbn->setObjectName(QString::fromUtf8("leGetBookFilterIsbn"));

    formLayout_3->setWidget(2, QFormLayout::FieldRole, leGetBookFilterIsbn);

    cbGetBookFilterType = new QComboBox(gbGetBookFilter);
    cbGetBookFilterType->setObjectName(QString::fromUtf8("cbGetBookFilterType"));

    formLayout_3->setWidget(3, QFormLayout::FieldRole, cbGetBookFilterType);


    verticalLayout_3->addLayout(formLayout_3);

    horizontalLayout_6 = new QHBoxLayout();
    horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
    horizontalSpacer_4 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    horizontalLayout_6->addItem(horizontalSpacer_4);

    pbGetBookFilter = new QPushButton(gbGetBookFilter);
    pbGetBookFilter->setObjectName(QString::fromUtf8("pbGetBookFilter"));

    horizontalLayout_6->addWidget(pbGetBookFilter);

    pbGetBookFilterReset = new QPushButton(gbGetBookFilter);
    pbGetBookFilterReset->setObjectName(QString::fromUtf8("pbGetBookFilterReset"));

    horizontalLayout_6->addWidget(pbGetBookFilterReset);


    verticalLayout_3->addLayout(horizontalLayout_6);


    horizontalLayout_7->addWidget(gbGetBookFilter);

    gbGetBookResult = new QGroupBox(gbGetBook);
    gbGetBookResult->setObjectName(QString::fromUtf8("gbGetBookResult"));
    gridLayout_3 = new QGridLayout(gbGetBookResult);
    gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
    tvGetBook = new QTreeView(gbGetBookResult);
    tvGetBook->setObjectName(QString::fromUtf8("tvGetBook"));
    tvGetBook->setEditTriggers(QAbstractItemView::NoEditTriggers);
    tvGetBook->setRootIsDecorated(false);
    tvGetBook->setSortingEnabled(true);
    tvGetBook->setAllColumnsShowFocus(true);

    gridLayout_3->addWidget(tvGetBook, 0, 0, 1, 1);


    horizontalLayout_7->addWidget(gbGetBookResult);


    verticalLayout_5->addWidget(gbGetBook);

    twActions->addTab(_get, QString());
    _return = new QWidget();
    _return->setObjectName(QString::fromUtf8("_return"));
    horizontalLayout_2 = new QHBoxLayout(_return);
    horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
    gbReturnFilter = new QGroupBox(_return);
    gbReturnFilter->setObjectName(QString::fromUtf8("gbReturnFilter"));
    gbReturnFilter->setMinimumSize(QSize(250, 0));
    gbReturnFilter->setMaximumSize(QSize(250, 16777215));
    verticalLayout_2 = new QVBoxLayout(gbReturnFilter);
    verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
    formLayout = new QFormLayout();
    formLayout->setObjectName(QString::fromUtf8("formLayout"));
    lReturnFilterPupil = new QLabel(gbReturnFilter);
    lReturnFilterPupil->setObjectName(QString::fromUtf8("lReturnFilterPupil"));

    formLayout->setWidget(0, QFormLayout::LabelRole, lReturnFilterPupil);

    lReturnFilterBook = new QLabel(gbReturnFilter);
    lReturnFilterBook->setObjectName(QString::fromUtf8("lReturnFilterBook"));

    formLayout->setWidget(1, QFormLayout::LabelRole, lReturnFilterBook);

    lReturnFilterGet = new QLabel(gbReturnFilter);
    lReturnFilterGet->setObjectName(QString::fromUtf8("lReturnFilterGet"));

    formLayout->setWidget(2, QFormLayout::LabelRole, lReturnFilterGet);

    lReturnFilterReturn = new QLabel(gbReturnFilter);
    lReturnFilterReturn->setObjectName(QString::fromUtf8("lReturnFilterReturn"));

    formLayout->setWidget(3, QFormLayout::LabelRole, lReturnFilterReturn);

    cbReturnDue = new QCheckBox(gbReturnFilter);
    cbReturnDue->setObjectName(QString::fromUtf8("cbReturnDue"));

    formLayout->setWidget(4, QFormLayout::FieldRole, cbReturnDue);

    cbReturnFilterPupil = new QComboBox(gbReturnFilter);
    cbReturnFilterPupil->setObjectName(QString::fromUtf8("cbReturnFilterPupil"));
    cbReturnFilterPupil->setModelColumn(-1);

    formLayout->setWidget(0, QFormLayout::FieldRole, cbReturnFilterPupil);

    cbReturnFilterBook = new QComboBox(gbReturnFilter);
    cbReturnFilterBook->setObjectName(QString::fromUtf8("cbReturnFilterBook"));
    cbReturnFilterBook->setModelColumn(-1);

    formLayout->setWidget(1, QFormLayout::FieldRole, cbReturnFilterBook);

    deReturnFilterGet = new QDateEdit(gbReturnFilter);
    deReturnFilterGet->setObjectName(QString::fromUtf8("deReturnFilterGet"));
    deReturnFilterGet->setMinimumDate(QDate(1900, 12, 31));
    deReturnFilterGet->setCalendarPopup(true);
    deReturnFilterGet->setDate(QDate(1900, 12, 31));

    formLayout->setWidget(2, QFormLayout::FieldRole, deReturnFilterGet);

    deReturnFilterReturn = new QDateEdit(gbReturnFilter);
    deReturnFilterReturn->setObjectName(QString::fromUtf8("deReturnFilterReturn"));
    deReturnFilterReturn->setMinimumDate(QDate(1900, 12, 31));
    deReturnFilterReturn->setCalendarPopup(true);
    deReturnFilterReturn->setDate(QDate(1900, 12, 31));

    formLayout->setWidget(3, QFormLayout::FieldRole, deReturnFilterReturn);


    verticalLayout_2->addLayout(formLayout);

    horizontalLayout_3 = new QHBoxLayout();
    horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
    horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    horizontalLayout_3->addItem(horizontalSpacer_2);

    pbReturnFilter = new QPushButton(gbReturnFilter);
    pbReturnFilter->setObjectName(QString::fromUtf8("pbReturnFilter"));

    horizontalLayout_3->addWidget(pbReturnFilter);

    pbReturnFilterReset = new QPushButton(gbReturnFilter);
    pbReturnFilterReset->setObjectName(QString::fromUtf8("pbReturnFilterReset"));

    horizontalLayout_3->addWidget(pbReturnFilterReset);


    verticalLayout_2->addLayout(horizontalLayout_3);


    horizontalLayout_2->addWidget(gbReturnFilter);

    gbReturnResults = new QGroupBox(_return);
    gbReturnResults->setObjectName(QString::fromUtf8("gbReturnResults"));
    gridLayout_2 = new QGridLayout(gbReturnResults);
    gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
    tvReturn = new QTreeView(gbReturnResults);
    tvReturn->setObjectName(QString::fromUtf8("tvReturn"));
    tvReturn->setEditTriggers(QAbstractItemView::NoEditTriggers);
    tvReturn->setRootIsDecorated(false);
    tvReturn->setSortingEnabled(true);
    tvReturn->setAllColumnsShowFocus(true);

    gridLayout_2->addWidget(tvReturn, 0, 0, 1, 1);


    horizontalLayout_2->addWidget(gbReturnResults);

    twActions->addTab(_return, QString());
    _statics = new QWidget();
    _statics->setObjectName(QString::fromUtf8("_statics"));
    twActions->addTab(_statics, QString());

    verticalLayout_4->addWidget(twActions);

    horizontalLayout = new QHBoxLayout();
    horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
    horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    horizontalLayout->addItem(horizontalSpacer);

    pbSubmit = new QPushButton(centralwidget);
    pbSubmit->setObjectName(QString::fromUtf8("pbSubmit"));

    horizontalLayout->addWidget(pbSubmit);


    verticalLayout_4->addLayout(horizontalLayout);

    CShareItClass->setCentralWidget(centralwidget);
    menubar = new QMenuBar(CShareItClass);
    menubar->setObjectName(QString::fromUtf8("menubar"));
    menubar->setGeometry(QRect(0, 0, 800, 21));
    menuAdministration = new QMenu(menubar);
    menuAdministration->setObjectName(QString::fromUtf8("menuAdministration"));
    menuSystem = new QMenu(menubar);
    menuSystem->setObjectName(QString::fromUtf8("menuSystem"));
    menuHilfe = new QMenu(menubar);
    menuHilfe->setObjectName(QString::fromUtf8("menuHilfe"));
    CShareItClass->setMenuBar(menubar);
    statusbar = new QStatusBar(CShareItClass);
    statusbar->setObjectName(QString::fromUtf8("statusbar"));
    CShareItClass->setStatusBar(statusbar);

    menubar->addAction(menuAdministration->menuAction());
    menubar->addAction(menuSystem->menuAction());
    menubar->addAction(menuHilfe->menuAction());
    menuAdministration->addAction(adminClasses);
    menuAdministration->addAction(adminPupils);
    menuAdministration->addSeparator();
    menuAdministration->addAction(adminTypes);
    menuAdministration->addAction(adminBooks);
    menuAdministration->addSeparator();
    menuAdministration->addAction(adminShares);
    menuSystem->addAction(systemSettings);
    menuHilfe->addAction(helpAboutQt);
    menuHilfe->addAction(helpAboutShareIt);

    retranslateUi(CShareItClass);

    twActions->setCurrentIndex(0);


    QMetaObject::connectSlotsByName(CShareItClass);
    } // setupUi

    void retranslateUi(QMainWindow *CShareItClass)
    {
    CShareItClass->setWindowTitle(QApplication::translate("CShareItClass", "Share It", 0, QApplication::UnicodeUTF8));
    adminClasses->setText(QApplication::translate("CShareItClass", "Klassen", 0, QApplication::UnicodeUTF8));
    adminPupils->setText(QApplication::translate("CShareItClass", "Sch\303\274ler", 0, QApplication::UnicodeUTF8));
    adminTypes->setText(QApplication::translate("CShareItClass", "Generen", 0, QApplication::UnicodeUTF8));
    adminBooks->setText(QApplication::translate("CShareItClass", "B\303\274cher", 0, QApplication::UnicodeUTF8));
    adminShares->setText(QApplication::translate("CShareItClass", "Verleih", 0, QApplication::UnicodeUTF8));
    systemSettings->setText(QApplication::translate("CShareItClass", "Einstellungen", 0, QApplication::UnicodeUTF8));
    helpAboutQt->setText(QApplication::translate("CShareItClass", "\303\234ber Qt", 0, QApplication::UnicodeUTF8));
    helpAboutShareIt->setText(QApplication::translate("CShareItClass", "\303\234ber Share It", 0, QApplication::UnicodeUTF8));
    gbGetPupil->setTitle(QApplication::translate("CShareItClass", "Sch\303\274ler", 0, QApplication::UnicodeUTF8));
    gbGetPupilFilter->setTitle(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    lGetPupilFilterName->setText(QApplication::translate("CShareItClass", "Name", 0, QApplication::UnicodeUTF8));
    lGetPupilFilterClass->setText(QApplication::translate("CShareItClass", "Klasse", 0, QApplication::UnicodeUTF8));
    lGetPupilFilterBday->setText(QApplication::translate("CShareItClass", "Geburtstag", 0, QApplication::UnicodeUTF8));
    pbGetPupilFilter->setText(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    pbGetPupilFilterReset->setText(QApplication::translate("CShareItClass", "Zur\303\274cksetzen", 0, QApplication::UnicodeUTF8));
    gbGetPupilResult->setTitle(QApplication::translate("CShareItClass", "Ergebnisse", 0, QApplication::UnicodeUTF8));
    gbGetBook->setTitle(QApplication::translate("CShareItClass", "Buch", 0, QApplication::UnicodeUTF8));
    gbGetBookFilter->setTitle(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    lGetBookFilterTitle->setText(QApplication::translate("CShareItClass", "Titel", 0, QApplication::UnicodeUTF8));
    lGetBookFilterVerlag->setText(QApplication::translate("CShareItClass", "Verlag", 0, QApplication::UnicodeUTF8));
    lGetBookFilterIsbn->setText(QApplication::translate("CShareItClass", "ISBN", 0, QApplication::UnicodeUTF8));
    lGetBookFilterType->setText(QApplication::translate("CShareItClass", "Genere", 0, QApplication::UnicodeUTF8));
    pbGetBookFilter->setText(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    pbGetBookFilterReset->setText(QApplication::translate("CShareItClass", "Zur\303\274cksetzen", 0, QApplication::UnicodeUTF8));
    gbGetBookResult->setTitle(QApplication::translate("CShareItClass", "Ergebnisse", 0, QApplication::UnicodeUTF8));
    twActions->setTabText(twActions->indexOf(_get), QApplication::translate("CShareItClass", "Ausgabe", 0, QApplication::UnicodeUTF8));
    gbReturnFilter->setTitle(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    lReturnFilterPupil->setText(QApplication::translate("CShareItClass", "Sch\303\274ler", 0, QApplication::UnicodeUTF8));
    lReturnFilterBook->setText(QApplication::translate("CShareItClass", "Buch", 0, QApplication::UnicodeUTF8));
    lReturnFilterGet->setText(QApplication::translate("CShareItClass", "Ausgabe", 0, QApplication::UnicodeUTF8));
    lReturnFilterReturn->setText(QApplication::translate("CShareItClass", "R\303\274ckgabe", 0, QApplication::UnicodeUTF8));
    cbReturnDue->setText(QApplication::translate("CShareItClass", "F\303\244llige B\303\274cher", 0, QApplication::UnicodeUTF8));
    pbReturnFilter->setText(QApplication::translate("CShareItClass", "Filter", 0, QApplication::UnicodeUTF8));
    pbReturnFilterReset->setText(QApplication::translate("CShareItClass", "Zur\303\274cksetzen", 0, QApplication::UnicodeUTF8));
    gbReturnResults->setTitle(QApplication::translate("CShareItClass", "Ergebnisse", 0, QApplication::UnicodeUTF8));
    twActions->setTabText(twActions->indexOf(_return), QApplication::translate("CShareItClass", "R\303\274ckgabe", 0, QApplication::UnicodeUTF8));
    twActions->setTabText(twActions->indexOf(_statics), QApplication::translate("CShareItClass", "Statistiken", 0, QApplication::UnicodeUTF8));
    pbSubmit->setText(QApplication::translate("CShareItClass", "Ausgabe", 0, QApplication::UnicodeUTF8));
    menuAdministration->setTitle(QApplication::translate("CShareItClass", "Administration", 0, QApplication::UnicodeUTF8));
    menuSystem->setTitle(QApplication::translate("CShareItClass", "System", 0, QApplication::UnicodeUTF8));
    menuHilfe->setTitle(QApplication::translate("CShareItClass", "Hilfe", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class CShareItClass: public Ui_CShareItClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_CSHAREIT_H
nicht über den Aufbau wundern ist mein erstes Qt Programm
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

keiner eine ahnung ?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Doch, auf den ersten Blick ist auch kein Fehler erkennbar.

Für eine genauere Ansicht, wäre die Hilfe des Computers hilfreich. Doch dazu müßte man sich erst mal den Code aufwendig per Hand rauskopieren. Würdest du das bei dieser Codelänge machen?

In diesem Zusammenhang gibts noch das Stichwort: 'Kurzes(!) reproduzierbares Beispiel'
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

klar also hier :

Klassendefinition

Code: Alles auswählen

#ifndef CSHAREIT_H
#define CSHAREIT_H

#include <QtGui/QMainWindow>
#include <QtSql>
#include <QSettings>
#include <QHeaderView>
#include <QMessageBox>
#include "ui_cshareit.h"
#include "cclasses.h"
#include "cpupils.h"
#include "ctypes.h"
#include "cbooks.h"
#include "cshares.h"
#include "csettings.h"
#include "caboutshareit.h"

/**
 * Share It Hauptfenster
 */
class CShareIt: public QMainWindow
{
   Q_OBJECT

public:
   CShareIt(QWidget *parent = 0);
   ~CShareIt();

private:
   Ui::CShareItClass ui;
   QSqlRelationalTableModel * returnModel;
   QSettings settings;

private slots:
   void showClasses();
   void showPupils();
   void showTypes();
   void showBooks();
   void showShares();
   void showSettings();
   void showAboutShareIt();
   void changedAction(int index);
   void submit();
};

#endif // CSHAREIT_H 
und hier Implementation nur der teil für das model

Code: Alles auswählen

#include "cshareit.h"

/**
 * Konstruktor führt Aktionen aus die beim erstellen des Objekts
 * gemacht werden müssen.
 */
CShareIt::CShareIt(QWidget *parent) :
   QMainWindow(parent),
   returnModel(new QSqlRelationalTableModel),
   settings("settings.ini", QSettings::IniFormat)
{
   ui.setupUi(this);

   connect(ui.adminClasses, SIGNAL(triggered()),
         this, SLOT(showClasses()));
   connect(ui.adminPupils, SIGNAL(triggered()),
         this, SLOT(showPupils()));
   connect(ui.adminTypes, SIGNAL(triggered()),
         this, SLOT(showTypes()));
   connect(ui.adminBooks, SIGNAL(triggered()),
         this, SLOT(showBooks()));
   connect(ui.adminShares, SIGNAL(triggered()),
         this, SLOT(showShares()));
   connect(ui.systemSettings, SIGNAL(triggered()),
         this, SLOT(showSettings()));
   connect(ui.helpAboutQt, SIGNAL(triggered()),
         qApp, SLOT(aboutQt()));
   connect(ui.helpAboutShareIt, SIGNAL(triggered()),
         this, SLOT(showAboutShareIt()));
   connect(ui.twActions, SIGNAL(currentChanged(int)),
         this, SLOT(changedAction(int)));

   returnModel->setTable("shares");
   returnModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
   returnModel->setHeaderData(0, Qt::Horizontal, tr("ID"));
   returnModel->setHeaderData(1, Qt::Horizontal, tr("Schüler"));
   returnModel->setHeaderData(2, Qt::Horizontal, tr("Buch"));
   returnModel->setHeaderData(3, Qt::Horizontal, tr("Ausgabe"));
   returnModel->setHeaderData(4, Qt::Horizontal, tr("Rückgabe"));
   returnModel->setRelation(1, QSqlRelation("pupils", "id", "name"));
   returnModel->setRelation(2, QSqlRelation("books", "id", "title"));
   returnModel->select();

   ui.tvReturn->setModel(returnModel);
   ui.tvReturn->hideColumn(0);
   ui.tvReturn->header()->setResizeMode(QHeaderView::Stretch);
   ui.tvReturn->setItemDelegate(new QSqlRelationalDelegate(ui.tvReturn));
} 
.....
dürfte jetzt kurzer sein :) hoffe jetzt könntet ihr mir helfen :)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Naja, irgendwie fehlt mir die Stelle, an der du deinem returnModel ne Datenbank zuweist...
Hast du bei dieser Herangehensweise daran gedacht, irgendwo VOR dem Erstellen des Hauptfensters eine Datenbank zu öffnen?
Denn ansonsten hast du eine ungültige Datenbank für dein Model, und da verwundert es nicht, dass dieses keine Daten enthält.

Starte das mal auf der Konsole und sag, was da an Output zu lesen ist.

Grüße
Franz
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

mit der Datenbankverbindung ist alles ok, die erzeuge ich vor der QMainWindow Instanz

hier ist der ausschnitt aus der main...

Code: Alles auswählen

	else
	{
		dbHost = settings.value("database/host", "").toString();
		dbPort = settings.value("database/port", "").toInt();
		dbName = settings.value("database/database", "").toString();
		dbUser = settings.value("database/user", "").toString();
		dbPassword = settings.value("database/password", "").toString();

		QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
		db.setHostName(dbHost);
		db.setPort(dbPort);
		db.setDatabaseName(dbName);
		db.setUserName(dbUser);
		db.setPassword(dbPassword);

		if(!db.open())
		{
			msg.setText("Die Verbindung zur Datenbank kann nicht hergestellt werden, "
					"bitte überprüfen Sie die Datenbank Daten.");
			msg.setIcon(QMessageBox::Information);
			msg.setDetailedText(db.lastError().text());
			msg.setStandardButtons(QMessageBox::Ok);
			msg.setDefaultButton(QMessageBox::Ok);
			msg.exec();

			cs->show();
		}
		else
und ich starte zurzeit immer mit der Console und leider gibt sie mir auch kein Fehler aus ... und Daten aus der Datenbank bekomme ich auch überall nur eben nicht im QMainWindow wen ich die Models als Klassenvariable deklariere.
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

keiner eine ahnung ? wäre echt nicht schlecht wenn jemmand helfen könnte komme da gerade nicht voran ...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Lies dir in Ruhe noch mal meinem Beitrag durch, setz das um, dann reden wir weiter...
XxM4ST3RxX
Beiträge: 39
Registriert: 14. Oktober 2008 19:50

Beitrag von XxM4ST3RxX »

naja den code habe ich schon so kurz gepostet wie nötig kürzer geht es nicht siehe 10ter beitrag und das mit "Für eine genauere Ansicht, wäre die Hilfe des Computers hilfreich." falls du damit debuggen meinst habe noch nie einen debugger benutzt schon mal versucht aber nicht hat so geklappt... und meine entwicklungsumgebung ist eclipse wäre schon mal nicht schlecht wen mir jemmand sagt wieso sich das model nur nicht in einem QMainWindow Konstruktor füllt ? die 2te möglichkeit die bisher klappt wäre es mit in einen slot zu packen aber dann habe ich es nur als localen zeiger und bei jedem aufruf wird ein neus model erstellt ....
Antworten