Les derniers messages du forum QtFR.

27/04/2017

Comment exploiter les résultats de query SQL.

Bonjour, je début avec Qt et j'ai une notion que je n'arrive pas a comprendre du tout.

Comme le dit le titre j'aimerais afficher, traiter organiser mes résultats qui découle d'une query SQL (ex : "SELECT id,nom,adresse FROM utilisateur")
J'ai testé ceci :
while (query->next()) {
QString tech_id = query->value(0).toString();
code>
Ça fonctionne si j'essai d'afficher ça dans un qDebug() mais sinon ça n'affiche rien.

J'ai lu sur certains postes qu'il fallait créer un "Mapping" pour ordonner les données mais j'ai pas vraiment vu de tutoriel à propos de ça.
Pouvez-vous m'orienter sur une solution ? Merci :)
26/04/2017

Pb Affichage QGraphicsView

Bonjour à tous,
Désolé pour mes nombreuses questions mais j'ai encore un problème de compréhension...enfin plutôt une erreur d'affichage....

J'ai une classe ou un Widget est affiché dans une QDialog, à l'intérieur j'affiche plusieurs images par rapport à un QSlider si la valeur du slider==0, img0 s'affiche si slider==1 img1 s'affiche ....

Jusqu'ici pas de problème ....

Ensuite à l'aide d'un QPushButton je voudrais envoyé sur une fenetre qui hérite de QGraphicsView (qui est dans une autre classe) l'image que j'ai choisi par exemple slider==1, img1 s'affiche dans le QDialog j'appuie sur le QPushButton et img1 s'affiche dans la fenetre...

Je fais ceci grâce à une instance de fenetre et j'envoie mon image dans une méthode AfficheMonImage je récupère bien mon image mais elle ne s'affiche pas dans ma scene...

De plus lorsque je déclare mon instance de fenetre dans la classe ou se trouve le QDialog il me crée une petite fenetre en haut à droite de la QDialog ou l'image que j'ai choisi s'affiche...

J'espère que j'ai été assez clair sinon n'hésitez pas à me demander plus d'explications....

je vous mets un extraits de code de la classe de QDialog (SecondeFenetre) et de la classe Fenetre...

classe SecondeFenetre

SecondeFenetre::SecondeFenetre(QWidget *parent):QDialog(parent){

InstFenetre = new Fenetre(this);

//BoutonEnvoieImage=QPushButton
connect(BoutonEnvoieImage,SIGNAL(pressed()),this,SLOT(ChargeImgVersfen()));

}

void SecondeFenetre::ChargeImgVersfen(){
//slider est le QSlider
if(slider->value()==0){

InstFenetre->DrawImageScene(img0));

}
else if(slider->value==1){
InstFenetre->DrawImageScene(img1));
}
////.....etc....
}

classe Fenetre

Fenetre::Fenetre(QWidget* parent) : QGraphicsView(parent){

scene = new QGraphicsScene;

pixmapItem = new QGraphicsPixmapItem(pixmap);

scene->addItem(pixmapItem);

this->setScene(scene);

}



void Fenetre::DrawImageScene(const QImage &image){

//Je récupére bien mon image dans le pixmap mais elle ne s'affiche pas dans la scene..
pixmap = QPixmap::fromImage(image);

pixmapItem->setPixmap(pixmap);

}
27/04/2017

Traduction de plugins

Bonjour,

mon projet actuel a un système de plugins configurables. Les plugins renvoient leur configuration via un QJsonObject et l'application "génère" la fenêtre pour les configurer (système similaire aux fichiers .ui de designer).
Mais la configuration contient des chaînes à traduire mais elle ne le sont pas et je n'arrive pas à trouver pourquoi.

Mon application est architecturée de la même façon que l'exemple Plug & Paint de Qt : Une QMainWindow qui parcourt le dossier "plugins" et charge les plugins qui implémentent l'interface IProvider.

Avant la création de la QMainWindow, je charge la traduction de l'application (ça marche), puis dans son constructeur, je charge les plugins qui chargent leur propre traduction :
if (translator.load(QLocale(), QString(), QString(), QString(":/lang")))
{
qDebug() << "loaded file";
qDebug() << "installed?" << qApp->installTranslator(&translator);
}
le fichier s'appelle juste "fr_FR.qm" et se trouve le fichier de ressources, préfixe ":/lang". qDebug() affiche bien "loaded file" puis "installed? true", preuve qu'il est trouvé.

J'ai pensé qu'il fallait charger les traductions avant de créer le moindre widget, donc j'ai fait en sorte que les plugins soient chargés avant la création de la QMainWindow et je les lui passe via le constructeur, résultat : aucun changement.

Les chaînes de traduction des plugins ne sont utilisées que dans une QDialog crée et affichée à la demande, donc le fait de les charger dans le constructeur de la QMainWindow ne devrait pas changer grand chose (et d'où le fait d'aucun changement à la ligne d'au-dessus).

Voici un une version épuré d'un plugin :
// .h
class POUETPROVIDERSHARED_EXPORT PouetProvider : public QObject, public IProvider
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "com.minirop.pouet.PouetProvider")
Q_INTERFACES(IProvider)

public:
PouetProvider();
QJsonArray configuration() const override;

private:
QJsonArray conf;
QTranslator translator;
};

// .cpp
PouetProvider::PouetProvider()
{
if (translator.load(QLocale(), QString(), QString(), QString(":/lang")))
{
qDebug() << "loaded file";
qDebug() << "installed?" << qApp->installTranslator(&translator);
}

QJsonArray choices;
choices.append(tr("No"));
choices.append(tr("Yes"));

QJsonObject obj;
obj["name"] = "miniatures";
obj["description"] = tr("Afficher les miniatures ?");
obj["type"] = enum_cast(Widget::Combo);
obj["values"] = choices;

conf.append(obj);
}

QJsonArray PouetProvider::configuration() const
{
return conf;
}
Voilà, je ne sais pas quoi dire de plus. Si quelqu'un à une idée/piste/whatever.

Merci d'avance.
26/04/2017

Probleme pour reload mes settings

Salut à ceux qui liront et merci d'avance,

Je galère depuis ce matin à utiliser Settings{} de QML. J'ai une page dans laquelle j'affiche 3 'bool' (au démarrage de l'appli je vais lire un fichier 'config.ini' pour initialiser ces bools ). Cela fonctionne correctement.

Sur cette même page j'ai un bouton qui m'ouvre un formulaire (Dialog) qui me permet de modifier ces 3 variables.

Une fois que j'ai modifié mes variables, si je fais 'ok' (le dialog se ferme) sur ma page les valeurs des 3 variables ne sont pas mises à jour. Si je vais dans un autre menu puis je reviens, là ça y est ! les valeurs sont les bonnes.

D’après ce que je comprends il faut donc recharger la page (les settings) pour que les modifs soient prises en compte. Est-ce le cas ? Quelqu’un connait-il une autre méthode pour dynamiquement recharger les 'Settings' ?

Encore merci
Lev

29/12/2016
25/04/2017

Reference Count sur un objet Qt

Je cherche un moyen d'implémenter un reference count sur un QEvent.
A première vu, je dirais que ce n'est pas possible, mais sait-on jamais ...

Pour être concrêt je cherche un moyen d'appeler plusieurs fois postEvent avec le même QEvent.
Et comme l'event est détruit par postEvent, ça plante !

Si vous avez une idée de génie pour éviter ça, you're welcome ;-)
26/06/2015

Les préférences d'une appli : un QSettings en singleton ?

Bonjour !

Je continue à abuser de demandes de conseil. Quand on a des cadors en C++ pas loin, il faut en profiter ! ;)

Le titre résume pas mal ma question. Concrètement c'est pour une appli particulière, Nem-Nem, un jeu de dés développé il y a plusieurs années que je viens de passer en Qt5. J'en profite pour nettoyer certains modules (les rendre plus propres).

Les préférences de l'appli, très nombreuses et de types variés (QSize, QColor, QPoint, numériques, chaînes, booléens mais aussi historique des scores...) sont stockées dans un QSettings lu au démarrage de l'appli, écrit à la fin, et modifié dans un écran dédié.

De nombreuses classes dépendent de ces options (les dés, la piste, la feuille de score, les sons...) et n'y accèdent pas elles-mêmes, mais disposent de SLOTs genre "setColor". Ça ne me plaît pas et j'ai l'occasion de changer.

Donc j'ai pensé à une classe Preferences héritant de QSettings et sous forme de singleton, lue et écrite en temps réel sur le disque (pas de souci de performance), dans laquelle les objets iraient piocher leurs caractéristiques quand ils en ont besoin.

Qu'en pensez-vous ? Comment faites-vous ?

Merci !!

PS il me semble avoir déjà discuté de cela, ici ou ailleurs, mais il y a assez longtemps... :8
25/04/2017

Erreur vlc-qt

Bonjour,

J'ai téléchargé mes sources depuis le git de vlc-qt, j'ai également la dernière version de vlc

J'ai déjà fais le make et le make install de tout.

Maintenant je veux tester le projet donné en example depuis le git et j'ai cette erreur à chaque fois
main.cpp:19: erreur : undefined reference to `_imp___ZN9VlcCommon13setPluginPathERK7QString'
Ainsi que plein d'autres erreurs du même type Undefined reference.

Voici mon .pro
#
# VLC-Qt Simple Player
# Copyright (C) 2015 Tadej Novak
#

TARGET = simple-player
TEMPLATE = app
CONFIG += c++11

QT += widgets

SOURCES += main.cpp \
SimplePlayer.cpp \
EqualizerDialog.cpp

HEADERS += SimplePlayer.h \
EqualizerDialog.h

FORMS += SimplePlayer.ui \
EqualizerDialog.ui

LIBS += -lvlc -lvlccore

# Edit below for custom library location
LIBS += -L/Users\Utilisateur\Downloads\Compressed\vlc-2.2.4-win64\vlc-2.2.4\sdk\lib
INCLUDEPATH += /Users\Utilisateur\Downloads\vlc-qt-master\build\include
INCLUDEPATH += /Users\Utilisateur\Downloads\vlc-qt-master\sdk\include
Et le main.cpp
/*
* VLC-Qt Simple Player
* Copyright (C) 2015 Tadej Novak
*/

#include
#include

#include

#include "SimplePlayer.h"

int main(int argc, char *argv[])
{
QCoreApplication::setApplicationName("VLC-Qt Simple Player");
QCoreApplication::setAttribute(Qt::AA_X11InitThreads);

QApplication app(argc, argv);
VlcCommon::setPluginPath(app.applicationDirPath() + "/plugins");

SimplePlayer mainWindow;
mainWindow.show();

return app.exec();
}
Je ne comprends absolument rien... j'ai pourtant tout bien fait, refait le build au moins 5 fois et j'obtiens toujours la même erreur !

Si jamais quelqu'un aurait réussi ça serait pas de refus que vous me mettiez un lien d'un projet de test s'il vous plait, pour que je puisse voir si ce n'est pas autre chose

Merci
24/04/2017

emit SIGNAL(QImage) est ce possible ?

Bonjour à tous,

J'avais une question par rapport au SIGNAL des connect, je voulais savoir si il était possible de mettre une QImage à un SIGNAL car j'ai essayé et je me retrouve avec une erreur de type :

erreur : expected primary-expression before ')' token
connect(InstanceClasse2,SIGNAL(emitImage(QImage)),this,monImage(QImage));
^

Avec InstanceClasse2 qui est une instance de ma Classe2 ou j'émets le signal et monImage qui est un slot qui se trouve dans la classe ou il y a le connect...


J'ai regardé sur la doc mais je n'ai pas trouvé d'infos sur ce sujet (j'ai peut être mal regarder..)

Merci par avance
22/04/2017

JPEG librairie dans Qt

Bonjour,

Mon promoteur de projet a modifié la configuration d'opencv car j'avais un souci à ce propos et maintenant, j'ai une erreur que je n'avais pas précédemment :
(HelloWord:28603): GdkPixbuf-WARNING **: Bug! loader 'png' didn't set an error on failure
(HelloWord:28603): Gtk-WARNING **: Error loading theme icon 'edit-find' for stock: Erreur interne : le module de chargement d'images « png » n'est pas parvenu à terminer une opération, mais il n'a pas donné la raison de son échec
(HelloWord:28603): GdkPixbuf-WARNING **: Bug! loader 'png' didn't set an error on failure
(HelloWord:28603): Gtk-WARNING **: Error loading theme icon 'edit-find' for stock: Erreur interne : le module de chargement d'images « png » n'est pas parvenu à terminer une opération, mais il n'a pas donné la raison de son échec
Wrong JPEG library version: library is 62, caller expects 80 The program has unexpectedly finished.
Pourtant, quand j'ai essayé de désinstaller libjpeg62, il dit que ça n'existe pas...
Merci de votre aide !