wie kann ich die komplett deaktivieren Sie die Größenänderung eines Fensters einschließlich der resize-Symbol, wenn der Mauszeiger die Grenze?
Ich verwendet:
setFixedSize(size());
zum stoppen der Fenster von der Größe ändern, aber die resize-Pfeile noch angezeigt, wenn der Mauszeiger über dem Rand des Fensters.
Gibt es eine bessere Art und Weise zu deaktivieren, Fenster Größenänderung zu vermeiden, zeigen die Pfeile beim überschreiten der Grenze?
- Welches OS verwenden Sie? Haben Sie versucht, mit dialog anstelle der Fenster?
- Windows 8. Entwicklung für desktop. Ich bin gerade erstellten neuen Projekt. do u think dialog aushängen?
- Gut, in meinem WinXp der einzige Ort, wo die Pfeile erschienen ist (nachdem Sie die Einstellung Feste Größe) ist unten in der rechten Ecke (die mit ein Dreieck). Im dialog (nachdem Sie die Einstellung Feste Größe) - keine Pfeile erschienen.
- Ich werde versuchen, den dialog benutzen.
- Sie können versuchen, die Einstellung der Größe der Politik zu QSizePolicy::Feste
- ariwez '<property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property>' seine seted bis. aber es wird nicht zu hören. seine Größenänderung sowieso....
- Amartel: dialog ist der gleiche.
- Könnten Sie bitte den Kommentar auf die Antwort, wie man diese arbeiten? Habe das gleiche problem jetzt, aber der parameter object ist nie QSizeGrip, daher habe ich keine Ahnung, was als Nächstes zu tun ist.
- setFixedSize(size()) funktioniert bei mir. Vielleicht war es eine alte Qt-bug oder etwas anderes überschreiben, Ihren Anruf, nachdem Sie es machen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Qt hat ein windowFlag genannt
Qt::MSWindowsFixedSizeDialogHint
für, die. Je nachdem, was Sie genau wollen, Sie wollen, verbinden dieses flag mitQt::Widget
,Qt::Window
oderQt::Dialog
.Probieren Sie etwas wie dieses:
Wenn das nicht funktioniert, ist alles was Sie tun müssen, ist herauszufinden, was der widget aktiviert QSizeGrip. Sie können tun dies, indem Sie einen Ereignis-filter auf Ihrer app und versuchen Sie, fangen die QSizeGrip ist mouseMoveEvent. Dann debug übergeordneten widget.
Hier ist ein Beispiel der eventFilter Funktion, die Sie verwenden könnten:
Könnte Sie wahrscheinlich fangen show-Veranstaltung, es ist bis zu Ihnen.
Qt::MSWindowsFixedSizeDialogHint
)One-liner, wenn Sie genau wissen, welche Größe das Fenster sein sollte:
Bei Verwendung von Qt-Designer, stellen Ihre Fenster "sizePolicy" Eigenschaften " auf "Fest" in der vertikalen und horizontalen Richtungen, und setzen Sie die minimale und maximale Abmessungen die gleichen Werte. Dann mit der rechten Maustaste auf das Fenster und wählen Sie "Remove Status Bar", um loszuwerden, die "size grip" in der unteren rechten Ecke. Oder, entfernen Sie einfach die Größe Griff über den Vorschlag von Franz (anstatt das gesamte status-bar).
Fand ich, dass der Aufruf setSizeConstraint(QLayout::SetFixedSize) auf dem layout am besten funktioniert für mich. Insbesondere von einem QMainWindow Konstruktor, rief ich:
Hier ist ein link zu den docs: http://doc.qt.io/qt-4.8/qlayout.html#SizeConstraint-enum
(Ich bin mit Qt 4.8.)
Da dies auch eine einfache Möglichkeit zur Lösung des OP ' s Frage, ich dachte, ich würde teilen, es für andere zu berücksichtigen. Es scheint, dass es gibt viele Möglichkeiten, dies zu erreichen in Qt, aber nicht alle kann für jede situation geeignet. Ich habe versucht, einige der anderen Optionen hier gepostet, aber Sie hatten verschiedene Probleme oder Einschränkungen, die ich war nicht glücklich mit meiner eigenen situation.
Verwenden
setMinimumSize(QSize(width_px,height_px))
setMaximumSize(QSize(width_px,height_px))
wo beide Methoden haben gleichen Größe.Sie sehen nicht die resize-cursor & das Fenster somit nicht in der Größe verändert/maximiert.
Dies hat mir geholfen, mit Qt Creator 3.1.1:
Wenn Sie die Qt Creator, können Sie versuchen zu geben Sie die gleiche
Width
undHeight
dem Fenster in dieproperties
vongeometry
,minimumSize
undmaximumSize
.Können Sie in Qt5 verwenden Sie folgenden code,
Wo die sz QSize Objekt.
Außerdem können Sie nur so etwas wie:
Die Pfeile sind auch Weg.
Wenn Sie es wünschen, um die Werte von Breite und Höhe aus dem UI-Formular selbst ohne manuell angeben, dann können Sie den folgenden Befehl in Ihrem Projekt Klasse:
Können Sie auch separate Parameter für Breite und Höhe (wenn erforderlich) mit:
Um zu verhindern, dass die Größe des Fensters fügen Sie folgende Zeile hinzu:
setFixedSize(width(), height());
in Ihrem QMainWindow Konstruktor nach der Zeile:
ui->setupUi(this);
.Die einzige Lösung, die wirklich funktioniert für mich auf Windows 10 ist über die WinAPI:
Die Größe ist nicht bekannt, bis die Erscheinung und kann je nach system variieren die Einstellungen zu (100%, 125%, 150%), so können Sie versuchen, so etwas wie dieses (es verbirgt sich auch die resize-cursor):
Wenn jemand auf der Suche für die gleiche, aber in Python:
Ich habe gerade die Antwort gefunden. Im Qt-Designer, nur die sizeGripEnabled false unter statusbar des Fensters. Einfach