Oppure

Loading
13/12/18 21:14
Thejuster
Buona sera.

Una domanda abbastanza banale credo.

Su linux mi appaiono widget che in Windows tramite l'ide di QT non sono disponibili.
Come credo succederà ugualmente per Mac.

Mi domando se scrivendo del codice con questi widget successivamente saranno visibili anche su windows o per gli altri OS.

oltre questo, ci sono delle precauzioni da prendere in merito alla compilazione tra i diversi sistemi operativi?

Perché testando su linux il mio progetto Mappy, Crasha appena provo a lanciare un nuovo Form.
il debugger mi dice Segmentation Fault.

Ma non vedo dove possa trovarsi questo problema, visto che semplicemente mi apre un dialogo con due spinbox.

quindi vorrei capire se sbaglio io qualcosa, o ci sono operazioni diverse da fare sugli altri os.
Ultima modifica effettuata da Thejuster 13/12/18 21:16
mire.forumfree.it/ - Mire Engine
C# UI Designer
13/12/18 22:05
TheDarkJuster
Se su Windows va e su linux no hai sbagliato qualcosa. Segfault = hai sbagliato a usare opengl o hai fatto un accesso a memoria non tua
aaa
14/12/18 9:14
Thejuster
Come posso risolvere?
Hai qualche informazione che puoi essere utile a risolvere questo enigma per me?

Il sorgente e qui
pierotofy.it/pages/projects/…

cdn.discordapp.com/attachments/278928749246939136/522887758398619664/…

cdn.discordapp.com/attachments/278928749246939136/522888313531793408/…
Ultima modifica effettuata da Thejuster 14/12/18 9:23
mire.forumfree.it/ - Mire Engine
C# UI Designer
15/12/18 22:17
Thejuster
Dunque ho appreso dove avviene il problema.
Ma non sò perché succede, e come posso risolvere. proprio non ho idea.
E nemmeno google mi è di aiuto.

in pratica ho il crash all'overload dell'operatore.

Classe Tileset.cpp e Tileset.h


//Tileset.h

QDataStream& operator <<(QDataStream &s, QString& tt);
QDataStream& operator >>(QDataStream &in, QString& tt);


//Tileset.cpp
QDataStream& operator <<(QDataStream &s,QString& tt)
{
    s << tt;
    return s;
}


QDataStream& operator >>(QDataStream &in, QString& tt)
{
    in >> tt;
    return in;
}




Se commento queste due funzionim, funziona regolarmente. Ma in seguito non posso serializzare il Tileset che l'utente ha scelto
per quella determinata mappa.

li avviene l'errore del SEGFAULT.

cdn.discordapp.com/attachments/227530413063536641/523624491570561045/…

Qualche idea? :d
mire.forumfree.it/ - Mire Engine
C# UI Designer
16/12/18 19:37
TheDarkJuster
Scusa ma attualmente non ho molto tempo libero, però posso dirti che sto sviluppando un'applicazione con Qt e ho usato diversi widget, ad esempio il calendario, pulsanti, checkbox ecc... e non ho mai riscontrato un problema con le librerie Qt.

Tutto ciò che ho provato funziona sia su windows che su linux e non ho dovuto modificare codice, ho notato solo una differenza: il drover nvidia su Windows è molto permissivo e potevo eliminare l'istanza di OpenGL prima di rimuovere il programma, mentre su linux andava in segfault il programma alla chiusura.
aaa
17/12/18 13:31
Thejuster
Hai ragione scusa juster non mi sono espresso bene.
Quello che ho appena scritto e un errore che forse non dipende da win o linux ma non lo so se dipende dal sistema operativo.

Questa funzione di override su win funziona.

Mentre su Linux crasha come indicato nella screen shoot
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/12/18 10:52
Thejuster
Risolto grazie lo stesso.

La soluzione è che la serializazzione de QString viene già gestita dal Qt.
quindi non si può fare un ovveridde della stessa.

in precedenza mi hanno detto che la funzione fà una sorta di ping - pong infinito.
per questo crashava boh.

non sono un esperto di c++ come detto, ma da quel che ho capito, e che non bisogna usare un overload per serializzare una QString.

Caricherò gli aggiornamenti su GIT e su pierotofy.
Ultima modifica effettuata da Thejuster 23/12/18 10:53
mire.forumfree.it/ - Mire Engine
C# UI Designer