qSort in eigenen Klassen verwenden?

Ich versuche die Funktion qSort() zu verwenden, um eine Liste mit Objekten zu sortieren. Beispielcode, ich möchte gerne eine Liste mit Zeigern auf Personen nach dem Namen der Person sortieren (alphabetisch). Dazu rufe ich qSort folgend auf:

QList<Person*> sortClass::sortAlphabeticalPersons(givenPersons)
{

    qSort(givenPersons.begin(),
          givenPersons.end(),
          compareNamesOfPersons);
return givenPersons;

}

für die Funktion compareNamesOfPersons habe ich folgendes:

bool compareNamesOfPersons(Person* person1, Person* person2)
{
    return person1->getPersonsName().toLower() <
           person2->getPersonsName().toLower();
}

jetzt ist meine Frage, da ich diese SortierFunktion ja wiederum in einer Klasse Sort erstelle, gibt es Probleme in qalgorithm.h must use'.' or '->' to call pointer-to-member function in 'lessThan(...)', e.g. '(...->lessThan)(...)'

Leider weiß ich jetzt nicht wirklich weiter, ich habe das einmal ausprobiert in einer Testdatei, da habe ich das selbe mit den Objekten sortieren und Co gemacht, allerdings die Funktion stand dort in der main.cpp und die qSort() habe ich auch in der int main(...){...} Funktion aufgerufen. Jetzt soll das ganze aber in meine Klasse sortieren aufgerufen werden. Muss ich die jetzt die Funktion compareNamesOfPersons global setzen? Oder static? Ich weiß nicht so wirklich weiter.

Danke schon einmal!

Fehler, programmieren, cplusplus, CPP, Qt, sortieralgorithmen, Sortieralgorithmus
2 Antworten
qt-Programm: QLineEdit mit QPushButton auslesen funktioniert nicht, warum?

Hallo, ich versuche im 2 Fenster 2 des unteren Proggis Text der unteren QLineEdit nach oben zu übernehmen (mit testen ()), stürzt ab und wird oben(QlineEdit) nicht angezeigt . Warum klappt es nicht, bin Neuling in QT? Hier Counter.h: #include QLineEdit #include QPushButton #include QDialog

class Counter : public  QLineEdit
{
Q_OBJECT // Enable signals and slots
public:
Counter (QWidget *parent=0);
~Counter();
QPushButton *cl, *plus;  
QWidget *fen;
public slots:
 void countUp();
 void testen();
void MeinFenster(); 
private:
char zahlwort[200];
Counter *gf, *hf;
int n;
QString zahli;
};

hier Counter.cpp

#include "counter.h"
Counter::Counter (QWidget *parent)
  : QLineEdit (parent),
 n(0){}
 Counter::~Counter() {}
 void Counter :: MeinFenster() //QWidget parent)
 {
  fen = new QWidget();
 fen->setGeometry(100,200,300,200);
  fen->show();
  gf = new Counter(fen); // Eigentlich als Eingabe gedacht
  gf->setGeometry(10,10,100,20);
  gf->show();
  hf = new Counter(fen); // Als Ausgabe der Berechnungen gedacht
  hf->setGeometry(10,50,100,20);
  hf->show();
  hf->setText(zahli);
  cl = new QPushButton("test", fen);
  cl->setGeometry(50,120,95,20);
  cl->show();
  plus = new QPushButton("plus", fen);
  plus->setGeometry(50,150,95,20);
  plus->show();
  QObject::connect(cl, SIGNAL (clicked()), gf, SLOT(testen()));
  QObject::connect(plus, SIGNAL (clicked()), hf, SLOT(countUp()));
 }
 void Counter::countUp ()
 {
 zahli = text();
 n = zahli.toInt();
 n++;
 zahli.setNum(n);
 setText(zahli);
 }
 void Counter :: testen()
 {
  zahli = hf->text();
  setText(zahli);
 }
Counter::Counter (QWidget *parent)
 : QLineEdit (parent),
 n(0){}
 Counter::~Counter() {}
 void Counter :: MeinFenster() //QWidget parent)
 {
fen = new QWidget();
fen->setGeometry(100,200,300,200);
    fen->show();
gf = new Counter(fen); // Eigentlich als Eingabe gedacht
gf->setGeometry(10,10,100,20);
gf->show();
 hf = new Counter(fen); // Als Ausgabe der Berechnungen gedacht
 hf->setGeometry(10,50,100,20);
 hf->show();
hf->setText(zahli);
 cl = new QPushButton("test", fen);
 cl->setGeometry(50,120,95,20);
cl->show();
plus = new QPushButton("plus", fen);
plus->setGeometry(50,150,95,20);
    plus->show();
 QObject::connect(cl, SIGNAL (clicked()), gf, SLOT(testen()));
 QObject::connect(plus, SIGNAL (clicked()), hf, SLOT(countUp()));
}
void Counter::countUp ()
 {
 zahli = text();
 n = zahli.toInt();
 n++;
zahli.setNum(n);
 setText(zahli);
 }
 void Counter :: testen()
 {
  zahli = hf->text();
  setText(zahli);
 }

soll hf->text() heißen main.cpp = okay. Kann nicht auf Text der anderen mit Counter gesetzten QLineEdit-Elemente zurückgreifen. CountUp= ok.. Wird ohne Fehler / Warnmeldungen compiliert. Aber wenn ich versuche mit testen gf->text auf den Text vom Element gf zurückzugreifen will, stürzt das Prog ab. setText("hallo") wird angezeigt warum? Falsche Klasse oder was?

Text, Qt, slots, settext
3 Antworten
Qt 5 Programm stürzt ab

Hi Leute ich wollte ein Test Programm programmieren.

Jetzt hab ich ein Problem und zwar mein Programm stürzt dauernd ab!

Hier sind die Codes(kdwindow.h):

#ifndef KDWINDOW_H
#define KDWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QLabel>
#include <QLayout>

namespace Ui {
    class KdWindow;
}

class KdWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit KdWindow(QWidget *parent = 0);

private slots:
    void btnPressed();

private:
    QPushButton *btn;
    QLabel *label;

};


#endif // KDWINDOW_H

kdwindow.cpp:

#include "kdwindow.h"
#include <QCoreApplication>

KdWindow::KdWindow(QWidget *parent) : QMainWindow (parent) {
    label = new QLabel;
    label -> setText("Das ist ein einfacher Text");
    btn = new QPushButton("Klicken!", this);
    connect(btn, SIGNAL(clicked()), this, SLOT(btnPressed()));
    QVBoxLayout *vlayout = new QVBoxLayout;
    vlayout -> addWidget(label);
    vlayout -> addWidget(btn);
    setLayout(vlayout);
    setWindowTitle("KD Berechnung");
}

void KdWindow::btnPressed() {
    btn -> setText("Nochmal!");
}

und zu guter letzt die main.cpp:

#include "kdwindow.h"
#include <QApplication>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    KdWindow kdWindow;
    kdWindow.show();
    return app.exec();
}

Und die Fehler Meldung(naja mehr oder weniger):

Starte /Users/niklas/Documents/programming/Qt/build-KD-Desktop_Qt_5_4_0_clang_64bit-Debug/KD.app/Contents/MacOS/KD...
Das Programm ist abgestürzt.
/Users/niklas/Documents/programming/Qt/build-KD-Desktop_Qt_5_4_0_clang_64bit-Debug/KD.app/Contents/MacOS/KD ist abgestürzt
Programm, CPP, Qt, Absturz, Programm stürzt ab, Qt5
2 Antworten

Meistgelesene Fragen zum Thema Qt

Was bedeutet "unvollständiger Typ" bei QT/C++?

4 Antworten

Was ist Quantendynamik?

3 Antworten

Qt 5 Programm stürzt ab

2 Antworten

QString überprüfen

3 Antworten

Darf man mit Qt in der OpenSource erstellte Programme auch "verkaufen"?

2 Antworten

Qt in Visual Studio 2017 Community?

1 Antwort

Windowstaschenrechner in QT programmieren

1 Antwort

Qt [install_target] Error 129 Was tun?

1 Antwort

Vor- bzw Nachteile von QT gegenüber .NET-Framework?

1 Antwort

Qt - Neue und gute Antworten