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_ */
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;
}
}
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
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();
}