[QT] Appeler une variable dans une autre classe

Luune 24 Messages postés mercredi 26 avril 2017Date d'inscription 25 juillet 2017 Dernière intervention - 10 juil. 2017 à 12:14 - Dernière réponse : Help-Jason 1685 Messages postés mardi 28 juin 2011Date d'inscription 15 décembre 2017 Dernière intervention
- 10 juil. 2017 à 14:57
Bonjour,

Je développe une application sur QT, et dans main.cpp j'ai ce code :

#include "logista.h"
#include
#include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Logista w;
w.show();

//w.showFullScreen();

QScreen *screen = QGuiApplication::primaryScreen();
QRect screenGeometry = screen->geometry();
int ScreenHeight = screenGeometry.height();
int ScreenWidth = screenGeometry.width();
w.setFixedSize(ScreenWidth,ScreenHeight);
w.show();
qDebug() << "Computed dimensions " << ScreenWidth << "x" << ScreenHeight;


return a.exec();
}


Je sais que c'est bête comme question mais est ce que vous pouvez me dire comment je fais pour utiliser ScreenWidth et ScreenHeight dans Logista.cpp.
Merci d'avance..
Afficher la suite 

7 réponses

Répondre au sujet
Help-Jason 1685 Messages postés mardi 28 juin 2011Date d'inscription 15 décembre 2017 Dernière intervention - 10 juil. 2017 à 12:40
0
Utile
6
Tu utilises deja ces variables dans Logista.cpp en faisant :
w.setFixedSize(ScreenWidth,ScreenHeight);

Help-Jason 1685 Messages postés mardi 28 juin 2011Date d'inscription 15 décembre 2017 Dernière intervention - 10 juil. 2017 à 12:47
Cette erreur provient de main.cpp ? Quelle ligne de ton programme provoque cette erreur ?
Luune 24 Messages postés mercredi 26 avril 2017Date d'inscription 25 juillet 2017 Dernière intervention - 10 juil. 2017 à 12:52
non je n'ai aucune erreur a main.cpp.
j'ai ces erreurs a Logista.cpp :( chaque fois que j'essaie d'ajouter ScreenWidth ou ScreenHeight.
Help-Jason 1685 Messages postés mardi 28 juin 2011Date d'inscription 15 décembre 2017 Dernière intervention - 10 juil. 2017 à 12:59
Tu peux me donner le bout de code qui plante ? Si possible la fonction entiere
Luune 24 Messages postés mercredi 26 avril 2017Date d'inscription 25 juillet 2017 Dernière intervention - 10 juil. 2017 à 13:19
ok voila le code de Logista.cpp:

#include "logista.h"
#include "ui_logista.h"
#include <QTime>
#include <QTimer>
#include <QWidget>
#include <QQueue>

Logista::Logista(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Logista)
{
//QString StrBanner;
x = 0;
y= 10;
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(moveLabPdsFruit()));
timer->start(200);

ui->setupUi(this);

}

Logista::~Logista()
{
delete ui;
}
void Logista::moveLabPdsFruit()
{
x += 5;

ui->LabPdsFruit->move(QPoint(x,y));
if(x>SreenWidth){
x=0;
}
}


Pour que tu puisse comprendre ce que j'essaie de faire, dans main j'obtiens la dimension de l’écran ou l'application a été lancer pour que la fenêtre principal profite de toute la dimension.. du coup dans Logista.cpp j'ai une label qui bouge et je veux qu'elle s’arrête a la fin du width pour qu'elle revient a x=0;
Tout ça marche quand je fixe le 'x' a 800 par exemple, mais quand je remplace 800 par SreenWidth, j'obtiens l'erreur que je t'ai déjà montrer.
Merci pour le temps que tu as accorder a mon problème.
Help-Jason 1685 Messages postés mardi 28 juin 2011Date d'inscription 15 décembre 2017 Dernière intervention - 10 juil. 2017 à 14:57
Quand tu fais cette operation :
w.setFixedSize(ScreenWidth,ScreenHeight);

Tu appelles la fonction
setFixedSize([...])
de Logista.
Il suffit que tu crees deux attributs pour Logista qui seraient ScreenWidth et ScreenHeight et que la methode
setFixedSize([...])
initialise ces deux attributs avec des valeurs en parametre.
Ainsi, dans main.cpp, tu crees une instance de Logista et quand tu as besoin de ces deux variables dans Logista, tu appelles cette fonction qui va les initialiser dans la classe.
Commenter la réponse de Help-Jason