Programmgesteuert auf einen QPushButton klicken

8

Ich benutze Qt. Ich habe eine Schaltfläche auf der Seite, die über den Qt Creator hinzugefügt wurde. Es ist mit der Methode void MyPage::on_startButton_clicked() verbunden.

Ich möchte programmgesteuert auf diese Schaltfläche klicken. Ich probierte ui->startButton->clicked() , es gibt,

  

Fehler C2248: 'QAbstractButton :: clicked': kann nicht auf das in der Klasse 'QAbstractButton' deklarierte geschützte Member zugreifen

Bitte helfen Sie. Danke!

    
PDH 13.05.2014, 01:01
quelle

3 Antworten

16

Verwenden Sie QAbstractButton::animateClick() :

%Vor%     
RA. 13.05.2014, 01:25
quelle
7

RA's Antwort bietet die Möglichkeit dies zu tun, so dass es sichtbar ist, dass die Schaltfläche angeklickt wurde. Wenn Sie nur das Signal aussenden wollen, ist das, was Sie tun, in Qt 5 korrekt, wo die Signale öffentlich sind.

Der angezeigte Fehler weist darauf hin, dass Sie Qt 4 verwenden, bei dem die Signale nicht öffentlich sind. Sie können dies umgehen, indem Sie das Signal indirekt aufrufen:

%Vor%

Dies ruft die Methode sofort auf, d. h. das Signal wird gesendet und die durch die Zeit invokeMethod aufgerufenen Schlitze kehren zurück. Leider setzt der meiste Code (meistens Ihr Code!) Voraus, dass das Signal von Ereignisverarbeitungscode in der Nähe der Ereignisschleife ausgegeben wird - d. H. Es ist nicht wiedereintretend, sondern von Ihrem eigenen Code. Daher sollten Sie die Signalemission auf die Ereignisschleife verschieben:

%Vor%

Das folgende ist ein vollständiges Beispiel für Qt 5.4 & amp; oben:

%Vor%     
Kuba Ober 13.05.2014 01:29
quelle
0

Wenn Sie die Animation nicht möchten, können Sie auch einfach die Methode aufrufen:

%Vor%     
Pavlos Fragkiadoulakis 18.06.2015 18:45
quelle

Tags und Links