QMainWindow with Qt::CustomizeWindowHint flag doesn't work aero snap - qt

I made a window using QMainWindow with Qt::CustomizeWindowHint flag to remove title bar.
I made a new title bar using my customized widget and implemented window move function.
So my window widget does not work with aero-snap on moving window.
(And my window doesn't work with aero-snap on resizing window)
How can I use aero snap with my customized widget?
Or do you know the apis of aero snap?
I found some web pages related to aero snap apis, but they say about c# only
What is the Aero function for previewing the screen state behind a window?
How can I use the functions on C++?
thanks.

Aero Snap can't be achieved when using CustomizeWindowHint to remove the title bar.
The title bar comes with implicit functionality that is controlled by the window manager, and this functionality includes some of the things you might have already noticed as missing: minimize, maximize, resize, move, system menu, etc.
Removing the title bar is essentially removing any native window manager support, and you're required to implement these features yourself.

Related

Qt scroll or resize main window

I have an application, that is made for Full HD with Qt Creator. When now this application is opened on a screen with less resolution, the application is no more fully accessable and I'm not sure, what the best method would be to make still everything accessable.
So my first idea was to embed a scroll bar in the main window, but I don't like that and I would do this only, if no better method exists.
I would prefer to resize the whole application (all the fonts and buttons etc.) dynamically, but I found no way yet to do this. Is this even possible in Qt? If not, can I somehow move inside the application (for example drag the screen with the mouse) around, but without a scroll bar?

Qt/QML: Custom menu exceeding window boundaries

I want to create a custom Qt/QML menu like the main menu in Firefox:
As you can see, the menu can exceed the boundaries of the main window if it is bigger than the main window. Is there any way to achieve such behavior in Qt? I tried with the native Menu QML component, but this only gives me a default OS context menu with very vew customization options. I want full control over how the menu looks like and its contents (i.e. the same possibilities I have for a normal QML component or widget).
Qt Quick Controls 1 has Menus that are native and hence are not limited to window bounds.
Qt Quick Controls 2 does not yet have support for native Menus. You can track that here.
Qt Labs Platform has a native menu.
However, I doubt that any of these options will be sufficient in your case, as native menu support means utilising whatever the OS provides, which is probably not flexible enough to implement the menu shown in the image.
As mentioned by #hyde, one option may be to create a Window and implement your menu in there.

Qt Scrollbar in QLabel

I have a small problem whit QScrollbar.
for example,
This is a one my project in C#
At left panel, the user loads a graphic image and can pick elements.
but I see in Qt don't exist Split Panel whit automatic Scrollbar.
I tried to use QScrollArea, but if user maximizes Window it's a problem.
anyone have a solution or a good way to make this in qt?

Build photo editor interface using Qt

I would like to create an application using Qt (PyQt5 specifically) that has a photo editor like interface. More specifically, I would like it to have:
No main window
Free-floating toolbar
Free-floating context window
Startup dialog
Edit-windows
The idea is to have the toolbar and context window persist for as along as the application is running. The user then opens one or multiple documents (e.g. images in the photo editor example) and uses the options in the toolbar to modify the document(s).
My first question is; does this type of application interface have a specific name, something akin to MDI or SDI? I've been searching for "photo editor interface" and variations on that, but haven't been able to find a search string that seems to hit the mark. For instance, I've tried "build a photo editor type interface with Qt" but it doesn't yield anything useful.
The second question I have is, what is the best way to build a Qt application that doesn't spawn a main window? It seems like I could kludge an assortment of dialogs together to make this happen, but I would really like to use a lot of the functionality of QMainWindow (toolbars, menus, top-level management of the application). Is there a way to launch QMainWindow, display the menu and toolbar, but suppress the main window?
I plan to primarily use this application on OSX, but would also like it to perform well on Windows and Linux.
QMenuBar has explicit support for OSX to have the menu bar behave as expected: http://doc.qt.io/qt-5/qmenubar.html#qmenubar-on-os-x
I think it'll also work on Ubuntu's Unity, which tries to have similar style, but there may be some details you need to take care of. Other desktops should work as expected.
As to how to have individual windows: any Qt widget will be a top level window if it has no parent, so that is an easy way to create windows. If you want to have parent windows (for example to control window stacking order automatically), there's a window flag for that. So you don't need to use QDialog (not sure if you were implying that in your question).
You want to read QWidget documentation carefully to get an idea how all this works.

I do I get QDialog geometry to expand in fullscreen?

I'm trying to get a fullscreen dialog to launch after clicking a button in my MainWindow using QT on Mac. I use showFullScreen() to display the dialog, and the whole screen does get taken up. The problem is that the widgets within the dialog are still constrained to the 1024px geometry set for the dialog in the designer, and positioned in the upper left corner of the screen. I can manually change the geometry in the ui file to match my desktop, but I can't get it to work programmatically. I have tried setting the geometry of the dialog to desktop()->geometry() and the running updateGeometry() and that did not work. I tried it both before and after running the showFullScreen() function.
I've tried setting the sizePolicy of the dialog to Expandable, Maximum, Preferred, and just about every other setting, and still no go. Right now it is an absolute bare bones project, show the only code to show would be the sessionscreen.showFullScreen() function in the button_clicked() slot.
I'm sure there is something I'm missing, but I have been at it for hours, scouring Google and Qt help forums and coming up empty. Hopefully someone can point out something very simple that I am missing.
Nevermind, I am indeed using layouts wrong, because the widgets don't move if i resize the layout in designer either. I thought I followed the tutorial videos exactly. This is why I prefer text based tutorials. Oh well, back to Youtube I go.

Resources