Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QString Result from QSettings
Qt 6.11 is out! See what's new in the release blog

QString Result from QSettings

Scheduled Pinned Locked Moved General and Desktop
3 Posts 2 Posters 1.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Cryterion
    wrote on last edited by
    #1

    Hi

    The problem I'm having is when reading back String variables from a .conf file, only the first String read is valid, then the following String reads are not returning the Pre-Written string.

    Here is the Read Function: -

    @//***********************************************************************************************************
    //
    // Function : ReadRecipes
    //
    // Passed : void
    // Returns : bool
    //
    // Reads the programmed recipe information from disk.
    //***********************************************************************************************************
    bool MainWindow::ReadRecipes()
    {
    TRecipeStruct *CurrentRecipe;
    TRecipeStruct *LastRecipe;
    unsigned int RecipeCount;
    unsigned int RecipeMax;
    QString RecipeCountStr;
    QString TmpString;

    RecipeCount = 0;
    RecipeMax = 0;
    QSettings Recipes("Anmar","Recipes");
    Recipes.sync();
    Recipes.beginGroup("RecipeCount");
    RecipeMax = Recipes.value("Count",0).toInt();
    Recipes.endGroup();
    while (RecipeCount < RecipeMax)
    {
        RecipeCount++;
        qApp->processEvents();
        CurrentRecipe = new TRecipeStruct();
        if (CurrentRecipe)
        {
            Recipes.beginGroup("RecipeNames");
            RecipeCountStr = "Recipe" + QString::number(RecipeCount);
            TmpString = Recipes.value(RecipeCountStr,"BlankName").toByteArray();
            CurrentRecipe->RecipeName = TmpString;
            Recipes.endGroup();
            Recipes.beginGroup(CurrentRecipe->RecipeName);
            CurrentRecipe->FlourWeight = Recipes.value("FlourWeight").toFloat();
            CurrentRecipe->SiloPercentage[0] = Recipes.value("Silo1Percent").toFloat();
            CurrentRecipe->SiloPercentage[1] = Recipes.value("Silo2Percent").toFloat();
            CurrentRecipe->SiloPercentage[2] = Recipes.value("Silo3Percent").toFloat();
            CurrentRecipe->SiloPercentage[3] = Recipes.value("Silo4Percent").toFloat();
            CurrentRecipe->WaterPercentage = Recipes.value("WaterPerecentage").toFloat();
            CurrentRecipe->DoughTemp = Recipes.value("DoughTemp").toFloat();
            CurrentRecipe->MixerTime = Recipes.value("Mixer1Time").toInt();
            CurrentRecipe->MixerConstant = Recipes.value("MixerConst1").toFloat();
            if (!SystemSetup->Recipes)
            {
                SystemSetup->Recipes = CurrentRecipe;
                CurrentRecipe->Prev = 0;
                CurrentRecipe->Next = 0;
            }
            else
            {
                LastRecipe = SystemSetup->Recipes;
                while(LastRecipe->Next)
                {
                    LastRecipe = LastRecipe->Next;
                    qApp->processEvents();
                }
                LastRecipe->Next = CurrentRecipe;
                CurrentRecipe->Prev = LastRecipe;
                CurrentRecipe->Next = 0;
            }
        }
    }
    return true;
    

    }@

    An example .conf file.

    @[RecipeCount]
    Count=3

    [RecipeNames]
    Recipe1=Test1
    Recipe2=Test2
    Recipe3=Test3

    [Test1]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)

    [Test2]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)

    [Test3]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)@

    With the above code, on first scan, recipe "Test1" is valid, whereas the next 2 the result returned from QSettings->value is the "BlankName" default result. Without a default value, "" is returned.

    1 Reply Last reply
    0
    • C Offline
      C Offline
      Cryterion
      wrote on last edited by
      #2

      I have the same result with either

      TmpString = Recipes.value(RecipeCountStr,"BlankName").toByteArray();

      or

      TmpString = Recipes.value(RecipeCountStr,"BlankName").toString();

      1 Reply Last reply
      0
      • A Offline
        A Offline
        andreyc
        wrote on last edited by
        #3

        In your code I don't see closing endGroup() for
        @
        Recipes.beginGroup(CurrentRecipe->RecipeName);
        @

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved