Standardmäßig wird den Dialogen das Flag Qt :: WindowContextHelpButtonHint hinzugefügt. Sie können dies mit dem Parameter WindowFlags für den Dialogkonstruktor steuern .
Zum Beispiel können Sie nur die TitleHint- und SystemMenu- Flags angeben, indem Sie Folgendes tun:
QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
d->exec();
Wenn Sie das Flag Qt :: WindowContextHelpButtonHint hinzufügen, erhalten Sie die Hilfeschaltfläche zurück.
In PyQt können Sie Folgendes tun:
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
d.exec_()
Weitere Details zu Fensterflags finden Sie in der WindowType-Enumeration in der Qt-Dokumentation.
Qt::WindowCloseButtonHint
wenn die Schaltfläche zum Schließen aktiviert werden soll.QtCore.Qt.WindowCloseButtonHint
und es entfernteQtCore.Qt.WindowTitleHint
. Ich gehe davon aus, dass das Setzen der Flags die Standardflags überschreibt, sodass Sie alle gewünschten Flags angeben müssen.// remove question mark from the title bar setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
quelle
Ok, ich habe einen Weg gefunden, dies zu tun.
Es handelt sich um die Fensterflags. Also hier ist der Code, den ich verwendet habe:
Auf diese Weise wird jedoch manchmal das Symbol des Dialogfelds zurückgesetzt. Um sicherzustellen, dass sich das Symbol des Dialogfelds nicht ändert, können Sie zwei Zeilen hinzufügen.
quelle
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
Ab Qt 5.10 können Sie diese Schaltflächen global mit einem einzigen
QApplication
Attribut deaktivieren !quelle
Ich bin in Windows 7, Qt 5.2, auf dieses Problem gestoßen, und die für mich am besten funktionierende Flags-Kombination war folgende:
Qt :: WindowTitleHint | Qt :: WindowCloseButtonHint
Dies gibt mir eine funktionierende Schaltfläche zum Schließen, aber keine Fragezeichen-Hilfeschaltfläche. Mit nur Qt :: WindowTitleHint oder Qt :: WindowSystemMenuHint wurde die Hilfeschaltfläche entfernt, aber auch die Schaltfläche zum Schließen deaktiviert.
Wie Michael Bishop vorschlug, spielte ich mit dem Beispiel der Fensterflaggen, das mich zu dieser Kombination führte. Vielen Dank!
quelle
Die hier aufgeführten Antworten funktionieren, aber um sie selbst zu beantworten, empfehlen wir Ihnen, das Beispielprogramm auszuführen
$QTDIR/examples/widgets/windowflags
. Auf diese Weise können Sie alle Konfigurationen von Fensterflags und deren Auswirkungen testen. Sehr nützlich, um Probleme mit Eichhörnchen-Fensterflaggen herauszufinden.quelle
Die folgende Methode zum Entfernen von Fragezeichen standardmäßig für alle Dialoge in der Anwendung kann verwendet werden:
Fügen Sie den folgenden Ereignisfilter
QApplication
irgendwo am Anfang Ihres Programms hinzu:bool eventFilter (QObject *watched, QEvent *event) override { if (event->type () == QEvent::Create) { if (watched->isWidgetType ()) { auto w = static_cast<QWidget *> (watched); w->setWindowFlags (w->windowFlags () & (~Qt::WindowContextHelpButtonHint)); } } return QObject::eventFilter (watched, event); }
quelle
Ich konnte keinen Steckplatz finden, aber Sie können die virtuelle
winEvent
Funktion überschreiben .#if defined(Q_WS_WIN) bool MyWizard::winEvent(MSG * msg, long * result) { switch (msg->message) { case WM_NCLBUTTONDOWN: if (msg->wParam == HTHELP) { } break; default: break; } return QWizard::winEvent(msg, result); } #endif
quelle