Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: akulla 22. 09. 2015, 17:06:52

Název: Qt - QString návratová hodnota funkce mezi dvěma soubory
Přispěvatel: akulla 22. 09. 2015, 17:06:52
Dobrý den,
obracím se na vás s prosbou o radu, nějak jsem se v tom ztratil. Mám jeden soubor (např. soubor.cpp), ve kterém mám funkci, která mi provede kompletní formátování textového řetezce (nastavení vel. písma, barvu atd.) - výsledek ukládám do QString proměnné. Výsledek této funkce, potřebuji zobrazit v jiném souboru (např. soubor-vys.cpp). Jak funkci, tak QString proměnnou mám jako public v hlavičkovém souboru "soubor.h".
Omlouvám se za tento dotaz, ale prostě se mi to nedaří vyřešit. Předem děkuji za nasměrování :-)
Název: Re:Qt - QString návratová hodnota funkce mezi dvěma soubory
Přispěvatel: Ondra Satai Nekola 22. 09. 2015, 17:14:20
Hod kod trebas na github. A pridej popis problemu.
Název: Re:Qt - QString návratová hodnota funkce mezi dvěma soubory
Přispěvatel: noname 22. 09. 2015, 18:27:50
Z Vašeho dotazu se velice obtížně chápe, co vlastně máte na mysli, ale jestli správně chápu problém, tak nemáte některý ze souborů vložený v souboru, kde chcete funkci volat (zobrazit?). Napsal bych to asi takto:

soubor.h:

#ifndef SOUBORHPP
#define SOUBORHPP

//Vaše deklarace tříd, prototypy funkcí...

#endif

soubor.cpp:
#ifndef SOUBORCPP
#define SOUBORCPP
#include <soubor.h>

//Vaše definice funkcí

#endif

soubor-vys.cpp:
#include <soubor.cpp>

// Váš kód volající konkrétní funkci a využívající konkrétní proměnnou.


Omlouvám se, pokud to není přesná odpověď na Váš dotaz, ale bohužel z Vaší otázky nelze jednoznačně vyčíst, na co se konkrétně ptáte. Také se omlouvám za případné chyby v syntaxi, bohužel jsem byl nucen si na nějakou dobu dát od programování v C++ pauzu a nastřelil jsem to všechno z hlavy a nevím, jsetli to je programátorsky úplně správně (hlavičkové soubory se dají do sebe skládat různě tak, aby vše fungovalo, ale podle toho, co vím, by měla být deklarace oddělená od definice), protože jsem měl programování spíše jako koníčka.
Název: Re:Qt - QString návratová hodnota funkce mezi dvěma soubory
Přispěvatel: Neviditelný 22. 09. 2015, 21:44:59
Do QStringu se žádné údaje o tom, jak má být text zobrazen uložit nedají, je to akorát takové chytřejší pole znaků. Co ta vaše funkce tedy provádí? Dál není z dotazu jasné, co se vlastně nepovede. Proč ta funkce zapisuje do členské proměnné nějakého jiného objektu? Takto se to běžně nedělá. Když už chcete oddělovat formátovač výstupu a (asi) samotné zobrazení, lze to řešit spíš takto:

Kód: [Vybrat]

class OutputDisplay {
public:
    OutputDisplay(const QString& output);
...
};

QString formatString(const QString& input)
{
    /* Vytvoř zformátovaný výstup */
    return output;
}

int main()
{
    QString input;

    QString output = formatString(input);
    OutputDisplay(output);

    ...

    return 0;
}
Název: Re:Qt - QString návratová hodnota funkce mezi dvěma soubory
Přispěvatel: Neviditelný 22. 09. 2015, 21:48:09
*
Kód: [Vybrat]
OutputDisplay(output) ==> OutputDisplay display(output);