SortDialog.exe hat ein Problem festgestellt und muss beendet

Alles rund um die Programmierung mit Qt
Antworten
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

SortDialog.exe hat ein Problem festgestellt und muss beendet

Beitrag von getit »

Hallo,

ich versuche mich an dem Buch "C++ GUI Programmierung mit Qt4".

Als IDE verwende ich eclipse. Habe schon mehrere Beispiele erfolgreich getestet, daher denke ich das alles richtig eingerichtet ist.

Ich erhalte bei jeder Ausführung der SortDialog.exe folgende Fehlermeldung: s. sortdialog.jpg
Ich habe das auch schon auf 2PCs getestet, da ich auf nen Speicherfehler getippt hätte - aber das hat auch nix gebracht.

Hier mal der Quellcode:
sortdialog.h

Code: Alles auswählen

#ifndef SORTDIALOG_H_
#define SORTDIALOG_H_

#include <QDialog>
#include "sortdialog.ui.h"

class SortDialog : public QDialog, public Ui::SortDialog {
	Q_OBJECT
	public:
		SortDialog(QWidget *parent = 0);
		void setColumnRange(QChar fist, QChar last);
};
#endif /* SORTDIALOG_H_ */
die entsprechende sortdialog.cpp:

Code: Alles auswählen

#include "sortdialog.h"
#include <QtGui>

SortDialog::SortDialog(QWidget *parent) : QDialog(parent) {
	setupUi(this);

	secondaryGroupBox->hide();
	tertiaryGroupBox->hide();
	layout()->setSizeConstraint(QLayout::SetFixedSize);

	setColumnRange('A', 'Z');
}

void SortDialog::setColumnRange(QChar first, QChar last) {
	primaryColumnCombo->clear();
	secondaryColumnCombo->clear();
	tertiaryColumnCombo->clear();

	secondaryColumnCombo->addItem(tr("None"));
	tertiaryColumnCombo->addItem(tr("None"));

	primaryColumnCombo->setMinimumSize(secondaryColumnCombo->sizeHint());

	QChar ch = first;
	while (ch <= last) {
		primaryColumnCombo->addItem(QChar(ch));
		secondaryColumnCombo->addItem(QChar(ch));
		tertiaryColumnCombo->addItem(QChar(ch));
		ch = ch.unicode() + 1;
	}
}
und die sotdialog.ui.h

Code: Alles auswählen

#ifndef SORTDIALOG_H
#define SORTDIALOG_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QComboBox>
#include <QtGui/QGridLayout>
#include <QtGui/QGroupBox>
#include <QtGui/QLabel>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_SortDialog
{
public:
    QWidget *widget;
    QVBoxLayout *verticalLayout;
    QPushButton *okButton;
    QPushButton *cancelButton;
    QSpacerItem *verticalSpacer;
    QPushButton *moreButton;
    QWidget *widget1;
    QVBoxLayout *verticalLayout_2;
    QGroupBox *primaryGroupBox;
    QGridLayout *gridLayout;
    QLabel *label;
    QComboBox *primaryColumnCombo;
    QSpacerItem *horizontalSpacer1;
    QLabel *label_2;
    QComboBox *primaryOrderCombo;
    QSpacerItem *verticalSpacer_2;
    QGroupBox *secondaryGroupBox;
    QGridLayout *gridLayout_2;
    QLabel *label_3;
    QComboBox *secondaryColumnCombo;
    QSpacerItem *horizontalSpacer2;
    QLabel *label_4;
    QComboBox *secondaryOrderCombo;
    QGroupBox *tertiaryGroupBox;
    QGridLayout *gridLayout_3;
    QLabel *label_5;
    QComboBox *tertiaryColumnCombo;
    QSpacerItem *horizontalSpacer3;
    QLabel *label_6;
    QComboBox *tertiaryOrderCombo;

    void setupUi(QWidget *SortDialog)
    {
    if (SortDialog->objectName().isEmpty())
        SortDialog->setObjectName(QString::fromUtf8("SortDialog"));
    SortDialog->resize(490, 323);
    widget = new QWidget(SortDialog);
    widget->setObjectName(QString::fromUtf8("widget"));
    widget->setGeometry(QRect(190, 20, 79, 111));
    verticalLayout = new QVBoxLayout(widget);
    verticalLayout->setSpacing(6);
    verticalLayout->setMargin(11);
    verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
    verticalLayout->setContentsMargins(0, 0, 0, 0);
    okButton = new QPushButton(widget);
    okButton->setObjectName(QString::fromUtf8("okButton"));
    okButton->setDefault(true);

    verticalLayout->addWidget(okButton);

    cancelButton = new QPushButton(widget);
    cancelButton->setObjectName(QString::fromUtf8("cancelButton"));

    verticalLayout->addWidget(cancelButton);

    verticalSpacer = new QSpacerItem(4, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);

    verticalLayout->addItem(verticalSpacer);

    moreButton = new QPushButton(widget);
    moreButton->setObjectName(QString::fromUtf8("moreButton"));
    moreButton->setCheckable(true);

    verticalLayout->addWidget(moreButton);

    widget1 = new QWidget(SortDialog);
    widget1->setObjectName(QString::fromUtf8("widget1"));
    widget1->setGeometry(QRect(20, 20, 156, 283));
    verticalLayout_2 = new QVBoxLayout(widget1);
    verticalLayout_2->setSpacing(6);
    verticalLayout_2->setMargin(11);
    verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
    verticalLayout_2->setContentsMargins(0, 0, 0, 0);
    primaryGroupBox = new QGroupBox(widget1);
    primaryGroupBox->setObjectName(QString::fromUtf8("primaryGroupBox"));
    gridLayout = new QGridLayout(primaryGroupBox);
    gridLayout->setSpacing(6);
    gridLayout->setMargin(11);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
    label = new QLabel(primaryGroupBox);
    label->setObjectName(QString::fromUtf8("label"));

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

    primaryColumnCombo = new QComboBox(primaryGroupBox);
    primaryColumnCombo->setObjectName(QString::fromUtf8("primaryColumnCombo"));

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

    horizontalSpacer1 = new QSpacerItem(28, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    gridLayout->addItem(horizontalSpacer1, 0, 2, 1, 1);

    label_2 = new QLabel(primaryGroupBox);
    label_2->setObjectName(QString::fromUtf8("label_2"));

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

    primaryOrderCombo = new QComboBox(primaryGroupBox);
    primaryOrderCombo->setObjectName(QString::fromUtf8("primaryOrderCombo"));

    gridLayout->addWidget(primaryOrderCombo, 1, 1, 1, 2);


    verticalLayout_2->addWidget(primaryGroupBox);

    verticalSpacer_2 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);

    verticalLayout_2->addItem(verticalSpacer_2);

    secondaryGroupBox = new QGroupBox(widget1);
    secondaryGroupBox->setObjectName(QString::fromUtf8("secondaryGroupBox"));
    gridLayout_2 = new QGridLayout(secondaryGroupBox);
    gridLayout_2->setSpacing(6);
    gridLayout_2->setMargin(11);
    gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
    label_3 = new QLabel(secondaryGroupBox);
    label_3->setObjectName(QString::fromUtf8("label_3"));

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

    secondaryColumnCombo = new QComboBox(secondaryGroupBox);
    secondaryColumnCombo->setObjectName(QString::fromUtf8("secondaryColumnCombo"));

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

    horizontalSpacer2 = new QSpacerItem(28, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    gridLayout_2->addItem(horizontalSpacer2, 0, 2, 1, 1);

    label_4 = new QLabel(secondaryGroupBox);
    label_4->setObjectName(QString::fromUtf8("label_4"));

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

    secondaryOrderCombo = new QComboBox(secondaryGroupBox);
    secondaryOrderCombo->setObjectName(QString::fromUtf8("secondaryOrderCombo"));

    gridLayout_2->addWidget(secondaryOrderCombo, 1, 1, 1, 2);


    verticalLayout_2->addWidget(secondaryGroupBox);

    tertiaryGroupBox = new QGroupBox(widget1);
    tertiaryGroupBox->setObjectName(QString::fromUtf8("tertiaryGroupBox"));
    gridLayout_3 = new QGridLayout(tertiaryGroupBox);
    gridLayout_3->setSpacing(6);
    gridLayout_3->setMargin(11);
    gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
    label_5 = new QLabel(tertiaryGroupBox);
    label_5->setObjectName(QString::fromUtf8("label_5"));

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

    tertiaryColumnCombo = new QComboBox(tertiaryGroupBox);
    tertiaryColumnCombo->setObjectName(QString::fromUtf8("tertiaryColumnCombo"));

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

    horizontalSpacer3 = new QSpacerItem(28, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

    gridLayout_3->addItem(horizontalSpacer3, 0, 2, 1, 1);

    label_6 = new QLabel(tertiaryGroupBox);
    label_6->setObjectName(QString::fromUtf8("label_6"));

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

    tertiaryOrderCombo = new QComboBox(tertiaryGroupBox);
    tertiaryOrderCombo->setObjectName(QString::fromUtf8("tertiaryOrderCombo"));

    gridLayout_3->addWidget(tertiaryOrderCombo, 1, 1, 1, 2);


    verticalLayout_2->addWidget(tertiaryGroupBox);


    retranslateUi(SortDialog);
    QObject::connect(okButton, SIGNAL(clicked()), SortDialog, SLOT(accept()));
    QObject::connect(cancelButton, SIGNAL(clicked()), SortDialog, SLOT(reject()));
    QObject::connect(moreButton, SIGNAL(toggled(bool)), secondaryGroupBox, SLOT(setVisible(bool)));
    QObject::connect(moreButton, SIGNAL(toggled(bool)), tertiaryGroupBox, SLOT(setVisible(bool)));

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

    void retranslateUi(QWidget *SortDialog)
    {
    SortDialog->setWindowTitle(QApplication::translate("SortDialog", "Sort", 0, QApplication::UnicodeUTF8));
    okButton->setText(QApplication::translate("SortDialog", "OK", 0, QApplication::UnicodeUTF8));
    cancelButton->setText(QApplication::translate("SortDialog", "Cancel", 0, QApplication::UnicodeUTF8));
    moreButton->setText(QApplication::translate("SortDialog", "&More", 0, QApplication::UnicodeUTF8));
    primaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Primary Key", 0, QApplication::UnicodeUTF8));
    label->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8));
    primaryColumnCombo->clear();
    primaryColumnCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8)
    );
    label_2->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8));
    primaryOrderCombo->clear();
    primaryOrderCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8)
     << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8)
    );
    secondaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Primary Key", 0, QApplication::UnicodeUTF8));
    label_3->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8));
    secondaryColumnCombo->clear();
    secondaryColumnCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8)
    );
    label_4->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8));
    secondaryOrderCombo->clear();
    secondaryOrderCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8)
     << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8)
    );
    tertiaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Primary Key", 0, QApplication::UnicodeUTF8));
    label_5->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8));
    tertiaryColumnCombo->clear();
    tertiaryColumnCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8)
    );
    label_6->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8));
    tertiaryOrderCombo->clear();
    tertiaryOrderCombo->insertItems(0, QStringList()
     << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8)
     << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8)
    );
    Q_UNUSED(SortDialog);
    } // retranslateUi

};

namespace Ui {
    class SortDialog: public Ui_SortDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // SORTDIALOG_H
Der Fehler tritt wird durch die Klasse SortDialog hervorgerufen.
Hier noch die main.cpp:

Code: Alles auswählen

#include <qapplication.h>
#include "sortdialog.h"

int main(int argc, char *argv[]) {
	QApplication app(argc, argv);
	SortDialog *dialog = new SortDialog;
	dialog->setColumnRange('C', 'F');
	dialog->show();
	return app.exec();
}
Dateianhänge
sortdialog.jpg
sortdialog.jpg (55.64 KiB) 2128 mal betrachtet
sortdialog.ui
(8.49 KiB) 126-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie wäre es mal mit Debuggen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Beitrag von getit »

@Christian81
Danke für den Tip!!

Aber wie mache ich das?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was sagt eigentlich Microsoft zu deinem Problem, sie bitten doch um den Bericht :lol:

Und wie man den Debugger bedient, steht im Handbuch dazu.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Mal wieder ein typischer Fall von 'ich fang jetzt mal Qt an ohne überhaupt zu wissen wie die Grundlagen (C, C++, Debugger, ...) funktionieren'.
Qt und deine Applikation muss im Debug-Mode übersetzt werden. Danach kann man mit gdb in Eclipse debuggen (naja, behauptet man zumindest aber bei Eclipse habe ich keine Ahnung - ist aber nur meine persönliche Meinung)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten