Sie würden dafür verwenden QMessageBox::question
.
Beispiel im Slot eines hypothetischen Widgets:
#include <QApplication>
#include <QMessageBox>
#include <QDebug>
// ...
void MyWidget::someSlot() {
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Test", "Quit?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
qDebug() << "Yes was clicked";
QApplication::quit();
} else {
qDebug() << "Yes was *not* clicked";
}
}
Sollte auf Qt 4 und 5 funktionieren, erfordert QT += widgets
auf Qt 5 und CONFIG += console
auf Win32, um die qDebug()
Ausgabe zu sehen .
In der StandardButton
Aufzählung finden Sie eine Liste der Schaltflächen, die Sie verwenden können. Die Funktion gibt die Schaltfläche zurück, auf die geklickt wurde. Sie können eine Standardschaltfläche mit einem zusätzlichen Argument festlegen (Qt " wählt automatisch einen geeigneten Standard aus ", wenn Sie dies nicht tun oder angeben QMessageBox::NoButton
).
Mit dem QMessage-Objekt können Sie ein Nachrichtenfeld erstellen und dann Schaltflächen hinzufügen:
quelle
setIcon
Methodenteil desQMessageBox
Objekts. mit einer, wenn diese Aufzählungen als Parameter:QMessageBox::NoIcon
QMessageBox::Question
QMessageBox::Information
doc.qt.io/qt-4.8/qmessagebox.html#icon-propQT kann so einfach sein wie Windows. Der entsprechende Code lautet
quelle
Ich vermisse den Übersetzungsaufruf
tr
in den Antworten.Eine der einfachsten Lösungen, die eine spätere Internationalisierung ermöglicht:
Es ist im Allgemeinen eine gute
Qt
Angewohnheit, Strings auf Codeebene in einentr("Your String")
Aufruf einzufügen.(
QMessagebox
wie oben funktioniert innerhalb jederQWidget
Methode)BEARBEITEN:
Sie können
QMesssageBox
außerhalb einesQWidget
Kontexts verwenden, siehe die Antwort von @ TobySpeight.Wenn Sie sich sogar außerhalb eines
QObject
Kontexts befinden, ersetzen Sie ihntr
durchqApp->translate("context", "String")
- Sie müssen#include <QApplication>
quelle
QMessageBox
enthält statische Methoden, um solche Fragen schnell zu stellen:Wenn Ihre Anforderungen komplexer sind als von den statischen Methoden vorgesehen, sollten Sie ein neues
QMessageBox
Objekt erstellen und seineexec()
Methode aufrufen , um es in einer eigenen Ereignisschleife anzuzeigen und die Kennung der gedrückten Schaltfläche zu erhalten. Zum Beispiel möchten wir vielleicht "Nein" als Standardantwort festlegen:quelle
QApplication
würde ich die Verwendung vorschlagenqApp->translate("context", "String")
, dietr
die Verwendung außerhalb einerQObject
Klasse ersetztWenn Sie es in Python schaffen möchten, müssen Sie diesen Code in Ihrer Workbench überprüfen. schreibe auch so. Wir haben ein Popup-Feld mit Python erstellt.
quelle