[C++/QT] QString

0

Witam. Mam klase:

class Test
{
public:
    test();
    QString dana;
    void funkcja();
};

void Test::funkcja()
{
    QString tmp = "Test";
    dana = tmp;
}

#include <QtCore/QCoreApplication>
#include <QDebug>
#include "test.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Test test;
    qDebug() << test.dana;


    return a.exec();
}

I teraz pytanie, jak przekopiować zawartość tmp do dana? Rozumiem, że do dana przypisywana jest tylko referencja do tmp, a po zakończeniu funkcji tmp jest usuwane. Więc jak wykonać takie przypisanie?

0

Zrob np. tak, ze Twoja funkcja zwraca QStringa i zwroci ten QString "tmp" nastepenie w mainie (skoro dana jest publiczna ...) zrob cos takiego:

test.dana = test.funkcja();
qDebug() << test.dana;

;)

0

Dziękuje za odpowiedź. Sposób na pewno się przyda :)

Ale mam jeszcze dalsze pytanie. Jeżeli jest sytuacja w której nie możemy zwrócić wartości? Np. funkcja jest slotem, to jak wtedy wykonać takie przypisanie?

0

Jeśli nie może zwrócić wartości, to warto wywołać ją w konstruktorze klasy. Aktualnie nie mam pomysłu, co jeśli byłby to slot, ale jak coś wymyślę, to dam znać ;)

0

Aktualnie zapisuje dane do pliku ale to nie jest rozwiązanie ;) Doszukałem się jeszcze http://doc.qt.nokia.com/4.7-snapshot/q3deepcopy.html ale otrzymuje błąd:

"q3deepcopy: No such file or directory"

Poza tym nie wiem czy to 'zaleca' się używać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1