Ich habe Qt 5.6 und ich verwende das gedrückte Signal einer Taste, die dann einen Dialog zeigt. Leider wird die Schaltfläche des Dialogs nicht beim ersten Mal angeklickt, aber der zweite Klick funktioniert einwandfrei. Sie können diese Situation testen, indem Sie einen QMessageBox::information
in einem on_someButton_pressed
Steckplatz anzeigen.QPushButton ist nicht auf den ersten Klick geklickt
Antwort
Sorry, kann nicht reproduzieren: funktioniert für mich. Und Sie sollten diesen Testfall geschrieben haben. Es sind fast weniger Wörter, um es zu kodieren, als das Problem zu beschreiben.
#include <QtWidgets>
int main(int argc, char ** argv) {
QApplication app{argc, argv};
QPushButton button{"Press me"};
button.setMinimumSize(300, 150);
button.setFont(QFont{"Helvetica", 20});
QObject::connect(&button, &QPushButton::pressed, [&]{
QMessageBox::information(&button, "Yes!", "You pressed me.");
});
button.show();
app.exec();
}
Als Nebenwirkung, sollten Sie das clicked()
Signal verwenden, nicht das pressed()
Signal. Usability leidet, wenn Sie das letztere benutzen.
Danke für die Antwort. Aber vielleicht habe ich die Situation nicht gut erklärt. Das Problem ist nicht der Druckknopf "Knopf" selbst, sondern der Druckknopf im Dialog. Zum Beispiel die Schaltfläche OK in der 'QMesageBox'. Sie sollten zweimal auf OK klicken, um den Informationsdialog zu schließen. Danke nochmal für deine Hilfe. –
Haben Sie den obigen Testfall ausgeführt? Es funktioniert gut! –
Tut mir leid, aber ich habe kein Problem damit in Windows. Aber in Beagle Bone Black und einem Touchscreen habe ich dieses Problem. Qt Version 5.6, Werkzeugkette Linaro 4.9, Cross-Compiling von Ubuntu 16.04. Ich denke, das Ereignis wird beim ersten Mal nicht im Qt-Event-Handler behandelt. –
- 1. Button reagiert nicht auf den ersten Klick
- 2. Datepicker zeigt nicht auf den ersten Klick
- 3. Umschalttaste funktioniert nicht. Keine Anzeige: keine; auf den ersten Klick
- 4. Programmatisch erstellt uiview reagiert nicht auf den ersten Klick
- 5. jQuery Akkordeon wird nicht auf den ersten Klick öffnen
- 6. JavaFX-Schaltfläche reagiert nicht auf den ersten Klick
- 7. Funktion innerhalb .on() nicht auf den ersten Klick Brennen
- 8. Jquery Klick-Funktion funktioniert nicht, wenn geklickt
- 9. Suche ersten Klick funktioniert nicht
- 10. jquery bestätigen nicht arbeiten an ersten Klick
- 11. Teil der Klick-Funktion funktioniert nicht beim ersten Klick
- 12. ASP.NET Button Ereignishandler nicht feuern auf den ersten Klick, aber auf den zweiten Klick nach einem PostBack
- 13. ng-repeat mit verschiedenen NG-Klick auf den ersten Index
- 14. Silverlight Combobox in DataTemplate geöffnet auf den ersten Klick
- 15. Twitter Bootstrap: Popovers zeigt nicht auf dem ersten Klick, sondern zeigt auf zweiten Klick auf
- 16. LinkButton nicht Postback auf den zweiten Klick
- 17. Abgerundetes Symbol auf Qpushbutton
- 18. Teil nicht aktualisiert beim ersten Klick
- 19. Wie programmgesteuert auf einen QPushButton klicken
- 20. Auf den ersten Klick auf meine URL Winkel App navigiert nicht auf die URL Route
- 21. Angular HTTP funktioniert nicht beim ersten Klick
- 22. Schaltfläche onclick funktioniert nicht beim ersten Klick
- 23. JQuery funktioniert nach dem ersten Klick nicht
- 24. Warum setzt React den Status auf den * zuvor * geklickt?
- 25. jquery live nicht feuern auf den ersten Klick auf ein Kontrollkästchen
- 26. Angular UI Bootstrap - modale Pop nicht auf dem ersten Klick
- 27. HTML-DOM (js wenn nicht auf den ersten Klick auf Element arbeiten)
- 28. JavaScript localStorage funktioniert nicht beim ersten Klick
- 29. ein Knopf eine Funktion auf den ersten Klick einen anderen auf den zweiten
- 30. scrollTop funktioniert nur beim ersten Klick
Mit welchem Signal verbinden Sie sich - [geklickt] (http://doc.qt.io/qt-4.8/qabstractbutton.html#clicked) oder [gedrückt] (http://doc.qt.io/qt -4.8/qabstractbutton.html # gedrückt)? – mvidelgauz
wie ich in der Frage erwähnt habe ** gedrückt ** Signal. –
Arbeitete für mich wie erwartet, Dialog Öffnen beim Drücken der Maustaste gedrückt ... Und alles, was ich tat, war ein Widget-Projekt erstellen, fügen Sie eine Schaltfläche im Designer, dann "Gehe zu Slot ...": void MainWindow: : on_pushButton_pressed() {QMessageBox :: information (das, "INFO", "Text ...", QMessageBox :: Ok); } ' – hyde