Ich verwende Qt Dialoge in einer meiner Anwendung. Ich muss die Hilfeschaltfläche verstecken/löschen. Aber ich bin nicht in der Lage zu lokalisieren, wo genau ich den Griff zu seinem Hilfe-Knopf bekomme. Nicht sicher, ob es ein bestimmtes Flag im Qt-Fenster ist.Wie kann ich das "?" Hilfe-Button in der "Titelleiste" eines Qt-Dialogs?
Antwort
Standardmäßig wird das Flag Qt :: WindowContextHelpButtonHint zu Dialogen hinzugefügt. Sie können dies mit dem Parameter WindowFlags an den Dialogkonstruktor steuern.
Zum Beispiel können Sie nur geben Sie die TitleHint und SystemMenu Flaggen, indem Sie:
QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
d->exec();
Wenn Sie die Qt :: WindowContextHelpButtonHint Flagge fügen Sie die Hilfe-Taste zurück zu bekommen.
In PyQt können Sie tun:
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
d.exec_()
Weitere Details über Fenster Flaggen auf der WindowType enum in der Qt-Dokumentation.
Ok, ich habe einen Weg gefunden, dies zu tun.
Es befasst sich mit den Window-Flags. Also hier ist der Code, den ich verwendete:
Aber dadurch manchmal das Symbol des Dialogs zurückgesetzt wird. Um sicherzustellen, dass sich das Symbol des Dialogfelds nicht ändert, können Sie zwei Zeilen hinzufügen.
QIcon icon = windowIcon();
Qt::WindowFlags flags = windowFlags();
Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;
flags = flags & (~helpFlag);
setWindowFlags(flags);
setWindowIcon(icon);
Kürzere Version: 'setWindowFlags (windowFlags() & ~ Qt :: WindowContextHelpButtonHint);' –
@ ThorbjørnLindeijer: Sie sollten dies als Antwort hinzufügen. – Hossein
Die hier aufgeführten Antworten wird funktionieren, aber es selbst zu beantworten, würde ich empfehlen Sie das Beispielprogramm $QTDIR/examples/widgets/windowflags
laufen. Damit können Sie alle Konfigurationen von Fensterflags und deren Auswirkungen testen. Sehr nützlich, um Probleme mit horrenden Windowflags herauszufinden.
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
Ich lief in dieses Problem in Windows 7, Qt 5.2 und die Fahnen-Kombination, die am besten für mich gearbeitet, war dies:
Qt :: WindowTitleHint | Qt :: WindowCloseButtonHint
Dies gibt mir eine funktionierende Schließen-Taste, aber keine Fragezeichen-Hilfe-Taste. Die Verwendung von nur Qt :: WindowTitleHint oder Qt :: WindowSystemMenuHint löste die Hilfe-Schaltfläche, aber auch die Schaltfläche zum Schließen.
Wie Michael Bishop vorgeschlagen hat, spielte es mit dem Windowflags-Beispiel, das mich zu dieser Kombination führte. Vielen Dank!
Dies ist die richtige Antwort. Die obigen Antworten deaktivieren die Schließen-Schaltfläche, die standardmäßig nicht deaktiviert ist. – Dan
// remove question mark from the title bar
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
Die folgende Art und Weise Fragezeichen standardmäßig für alle Dialoge in der Anwendung zu entfernen, verwendet werden könnte:
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);
}
:
die folgenden Ereignisfilter zu QApplication
irgendwo am Anfang des Programms anhang
- 1. Wie kann ich die Titelleiste eines QMdiSubWindow mit qss anpassen?
- 2. Text in der Titelleiste
- 3. Höhe der Titelleiste eines Fensters erkennen
- 4. Wie wird das Symbol in der QDockWidget Titelleiste angezeigt?
- 5. Wie kann ich die Titelleiste in einer Android-Anwendung verstecken
- 6. Wie ändere ich die Farbe der Titelleiste in Android-Aktivität?
- 7. wie ImageButton in der Titelleiste hinzufügen
- 8. Wie mache ich einen Fortschrittsbalken in der Titelleiste anstelle eines horizontalen Balkens?
- 9. Wie öffne ich das Kontextmenü eines Fensters?
- 10. Wie kann ich die Titelleiste auf JFrame anpassen?
- 11. Steuerelement, das das Ziehen der Titelleiste des Fensters simuliert
- 12. Wie Titelleiste in Android entfernen?
- 13. Zeichnen auf der Titelleiste in MFC
- 14. Ladesymbol in der Titelleiste der Aktivität anzeigen
- 15. Wie kann ich die Titelleiste einer Qt-App über das Qt-Stylesheet anpassen?
- 16. Titelleiste der zentralen Titelleiste von Syncfusion WinForms Ribbon Form?
- 17. Wie ändere ich die Höhe der Titelleiste von spark.components.Panel?
- 18. Wie kann ich meinen Java Swing-Anwendungstitel in der Titelleiste von Mac OS X ändern?
- 19. Wie kann ich erzwingen, dass ein Bild in der Titelleiste meiner WPF-Anwendung eingeblendet wird?
- 20. Schließen Schaltfläche in der Titelleiste in MFC
- 21. Titelleiste in Gnome entfernen
- 22. Wie entferne ich die Titelleiste in Android Studio?
- 23. Verwenden der Navigationsschublade ohne Titelleiste oder ActionBar
- 24. Titelleiste fehlt in NSOpenPanel?
- 25. Wie kann ich einfach ein Overlay (wie Dialog ohne Titelleiste) in jQuery UI öffnen?
- 26. Wie entferne ich die Titelleiste von einem JFrame-Screenshot?
- 27. Wie Entfernen (Android) App Titelleiste in Xamarin.Forms?
- 28. Schaltflächen in der Titelleiste des Fensters
- 29. Wie kann ich das Hardcoding eines Dateipfads vermeiden?
- 30. Wie kann ich das Systemmenü eines Windows Forms anpassen?
Siehe rrwicks Antwort unten. Wenn Sie Ihren Flags nicht Qt :: WindowCloseButtonHint hinzufügen, haben Sie die Schließen-Schaltfläche deaktiviert, die standardmäßig aktiviert ist. – Dan
Hier ist ein Link Fenster Flags in PyQt4, http://pyqt.sourceforge.net/Docs/PyQt4/qt.html#WindowType-enum – Barmaley
Geben Sie auch das Flag 'Qt :: WindowCloseButtonHint', wenn Sie die Schließen-Schaltfläche möchten aktiviert werden. –