Menu

[QT] Appeler une variable dans une autre classe [Fermé]

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 :  Utilisateur anonyme
- 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

Utilisateur anonyme - 10 juil. 2017 à 12:40
0
Merci
Tu utilises deja ces variables dans Logista.cpp en faisant :
w.setFixedSize(ScreenWidth,ScreenHeight);

Utilisateur anonyme - 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.
Utilisateur anonyme - 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.
Utilisateur anonyme - 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.