J'ai créé une interface graphique à l'aide de QT Creator. À un certain point une fenêtre de dialogue est ouverte à laquelle j'ai besoin d'envoyer une variable de type QStringList. Je fais cela en utilisant la méthode des signaux et des slots. Cependant, la variable est vide une fois envoyée. Voici quelques exemples de code:Envoi de QStringList entre les classes à l'aide de signaux et d'emplacements
widget.h
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
signals:
void mySignal(QStringList);
};
widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
// blah blah
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_4_clicked()
{
QStringList dList;
int damount = ui->listWidget->count();
for(int i=0; i < damount; i++){
dList << ui->listWidget->item(i)->text();
qDebug() << dList;
}
emit mySignal(dList);
mysaver mDialog;
mDialog.setModal(true);
mDialog.exec();
}
mysaver.h (La boîte de dialogue)
class mysaver : public QDialog
{
Q_OBJECT
public:
explicit mysaver(QWidget *parent = 0);
~mysaver();
public slots:
void myreciever(QStringList);
}
mysaver.cpp
void mysaver::myreciever(QStringList aList)
{
qDebug << aList;
}
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
Widget *duff = new Widget;
mysaver *buff = new mysaver;
QObject::connect(duff,SIGNAL(mySignal(QStringList)),buff,SLOT(myreciever(QStringList)));
w.show();
return a.exec();
}
J'apprécierais vraiment un peu d'aide à ce sujet. Note: Si je fais mal toute cette méthode et que je devrais faire quelque chose de complètement différent alors DITES-MOI!
QObject :: connect (duff, SIGNAL (monSignal (QVariant)), buff, SLOT (myreciever (QVariant))); - Pourquoi utilisez-vous QVariant et non QStringList? – demonplus
@demonplus Désolé, c'était une faute de frappe. – Zynky
Je ne vois rien de manifestement faux avec ce code, est-ce que 'damount' est plus grand que zéro? – cmannett85