2017-05-17 2 views
0

c'est la première fois que j'écris sur ce site, j'essaye de m'approcher chez Qt-creator mais j'ai un problème: Je veux supprimer le texte de l'étiquette quand l'utilisateur clique sur un bouton, je l'ai essayé une solution, mais sans succèsComment effacer une étiquette dans qt créateur

c'est le code:

struct finestra{ 
float costo; 
int altezza; 
int larghezza; 
QString text; 
QString costoStr; 
}; 

float Totale=0; 
finestra vet[21]; 
int i=1; 

//SOME CODE 

Totale+=vet[i].costo; 
vet[i].costoStr = QString::number(vet[i].costo); 
vet[i].text = vet[i-1].text + "Finestra ad un anta bianca <br>" + "€" + vet[i].costoStr +"<br>"; 
ui->TotaleFinestre->setText(QString(vet[i].text)); 
i++; 

J'ai essayé avec cette fonction:

void preventivi::on_pushButton_clicked() 
{ 
    ui->TotaleFinestre->clear(); 
} 

si quelqu'un sait comment à faire s'il vous plaît répondre,

merci à tous et désolé pour mon mauvais anglais.

+0

Avez-vous vérifié si l'emplacement est appelé en utilisant un débogueur ou une sortie de débogage simple? Comment faites-vous la connexion? Si l'exemple de code provient d'un fichier d'interface utilisateur, vous avez peut-être renommé "pushButton", puis la connexion est rompue ... – Lorenz

Répondre

0

Comme QLabel définissent la fente void QLabel::clear(), vous pouvez aussi simplement connecter cette fente avec le signal clicked() qui sera émis après un clic sur votre PushButton, en utilisant la méthode QObject::connect :

QObject::connect(pointer_to_your_pushButton, SIGNAL(clicked()), pointer_to_your_label, SLOT(clear()));

EDIT: Voici un petit exemple

L'interface utilisateur est un QWidget qui a un QLabel et un QPushButton. Je l'ai fait avec Qt Designer mais cela n'a pas d'importance ici.

#include "widget.h" 
#include "ui_widget.h" 

Widget::Widget(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Widget) 
{ 
    ui->setupUi(this); 
    QObject::connect(ui->pushButton, SIGNAL(clicked()), ui->label, SLOT(clear())); 
} 

Widget::~Widget() 
{ 
    delete ui; 
} 

Vous pouvez même le faire en utilisant « Modifier les signaux/slots » à l'intérieur de Qt Designer et faire le lien signal/fente entre vos widgets. (Vous aurez pas besoin d'appeler manuellement le QObject précédent :: connect, comme il se fera automatiquement à l'intérieur de la classe Ui_Widget, générée par l'UTI)

enter image description here

Ou vous pouvez faire tout cela sans Qt Designer, c'est à vous. J'espère que cela aide.

+0

Pouvez-vous être plus précis? –

+0

J'ai édité ma réponse pour être plus précis avec un exemple de travail. Cependant, je vous suggère de lire http://doc.qt.io/qt-5/signalsandslots.html – Scab

1

Peut-être que vous devriez essayer

void preventivi::on_pushButton_clicked() 
{ 
    ui->TotaleFinestre->setText(""); 
} 
+0

J'ai essayé mais cela ne fonctionne pas –