Bonjour à tous,

je réalise une interface de contrôle d'une carte national instrument. J'importe donc la bibliothèque NiDaqmw.h
je cherche à mettre à jour l'interface quand une tâche NI se termine. Pour cela je définies la fonction DoneCallBack qui doit être une fonction statique.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// ui.h
class ui: public QWidget
{
    Q_OBJECT
 
private : 
    int N;
 
    QpushButton *boutton;
 
    static int32 CVICALLBACK DoneCallback (TaskHandle taskHandle, int32 status, void *callbackData);
    // le paramètre intéressant c'est callBackData, je m'en sers pour passer à la fonction une référence à un objet dans mon cas : "mainWindow"
};
 
// .cpp
ui::ui(QWidget *parent)
    : QWidget(parent)
{
 
    int32 error;
    aiChannelNumber = 1;
    qRegisterMetaType<float64>("float64");
 
    //aiRecordPB
    boutton=  new QPushButton ("Record!");
}
int32 CVICALLBACK ui::DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData)
{
    MainWindow* monui= (MainWindow*) callbackData;
 
    qDebug()<<"Done!\n";                                   //marche
    monui->N = ui->N+1;                                    //marche
    monui->boutton->setText("données acquises); //crashe
    return(0);
}
J'arrive à changer des variables de l'objet ui depuis la fonctions "ui->N = 5" mais pas à appeler ses méthodes/fonctions. Je ne sais pas si c'est possible et si oui d'où viendrait l'erreur : problème de C++ ou de Qt?
merci d'avance pour votre aide.