Singleton w C++ z QT

0

Witam, powiecie mi czemu ten Singleton nie działa? Tzn nie zapisuje danych i ich nie czyta. Kod pobrany z wiki źródeł.
hpp

class Singleton : public QSettings
{
private:

    Singleton() {}
    Singleton(const Singleton&);
    //Singleton& operator=(const Singleton&);
public:
    static Singleton &Singleton::getInstance();
};

cpp

Singleton & Singleton::getInstance() {
    static Singleton settings;

    return settings;
}

wywolanie:
Singleton & s = Singleton::getInstance();

s.setValue("klucz","wartosc");

std::cout<<s.value("klucz")<<std::endl;

Nic nie wyświetla. Proszę o pomoc.

0

to się w ogóle kompiluje? nie da się wyprintowac QVariant przez std::cout

musisz dopisać toString().toStdString();

0

Tak wiem, ten fragment przepisywałem z pamięci. Oczywiście skonwertowałem. Nawet próbowałem qDebug() -giem ale też nic nie printuje. Pusto.

0

nie działa nawet bez singletona, problem jest gdzie indziej, może qt już tego nie wspiera, musisz poczytać

0

Niemożliwe. Na pewno coś o tym by pisali na necie. Poza tym normalnie includuje klasę, kreator podpowiada składnię (najnowsza wersja). Jeżeli to prawda musieliby dać jakiś zamiennik.

0

Singletony to kolejna moda, za którą trzeba mordować jeśli jest nadmierne stosowana i to jest właśnie taki przypadek.

Założę się że problemem jest to, że nie przeczytałeś dokumentacji.
Żeby QSettings działał musisz dostarczyć informację, gdzie ma zapisywać dane (system musi jakoś rozpoznać aplikację i lokalizację jej ustawień). Są dwie możliwości:

  1. przez zastosowanie jednego z konstruktorów z parametrami
  2. przez ustawienie informacji o aplikacji (QCoreApplication) i stosowanie domyślnego konstruktora, co jest wyraźnie opisane w jego dokumentacji.

Na dodatek założę się, że Qt pluje odpowiednim warningiem do strumienia błędów (co widać w oknie "komunikaty aplikacji", gdy korzystasz Qt Creator'a).

0

Wystarczyło dodać dane o aplikacji

QCoreApplication::setOrganizationName("Moose Soft");
 QCoreApplication::setApplicationName("Facturo-Pro");

Dzięki Marek

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