

For files in JPEG format, this ensures that portrait mode images of digital cameras are shown correctly by applying the appropriate orientation read from the EXIF meta data stored in the image file. In the loadFile() function, we instantiate a QImageReader and enable automatic transformations by calling QImageReader::setAutoTransform(). arg( QDir ::toNativeSeparators(fileName), reader. QMessageBox ::information( this, QGuiApplication ::applicationDisplayName() , The function loadFile() is used to load the image.īool ImageViewer ::loadFile( const QString &fileName) We show the file dialog until a valid file name is entered or the user cancels. We compile a list of mime types for use as a filter by querying QImageReader for the available mime type names. In the open() slot, we show a file dialog to the user. exec() = QDialog ::Accepted & & !loadFile(dialog. InitializeImageFileDialog(dialog, QFileDialog ::AcceptOpen) QFileDialog dialog( this, tr( "Open File")) If (acceptMode = QFileDialog ::AcceptSave) setMimeTypeFilters(mimeTypeFilters) ĭialog. ? QImageReader ::supportedMimeTypes() : QImageWriter ::supportedMimeTypes() įor ( const QByteArray &mimeTypeName : supportedMimeTypes)ĭialog. last()) Ĭonst QByteArrayList supportedMimeTypes = acceptMode = QFileDialog ::AcceptOpen isEmpty() ? QDir ::currentPath() : picturesLocations. Static void initializeImageFileDialog( QFileDialog &dialog, QFileDialog ::AcceptMode acceptMode)Ĭonst QStringList picturesLocations = QStandardPaths ::standardLocations( QStandardPaths ::PicturesLocation) ĭialog. At the end we create the associated actions and menus, and customize the ImageViewer's appearance. We make imageLabel the scroll area's child widget, and we make scrollArea the central widget of the QMainWindow. If we omitted to set the imageLabel's scaledContents property, zooming in would enlarge the QLabel, but leave the pixmap at its original size, exposing the QLabel's background. We ensure that the label will scale its contents to fill all available space, to enable the image to scale properly when zooming. Otherwise, the default size polizy ( preferred) will make scroll bars appear when the scroll area becomes smaller than the label's minimum size hint.

We set imageLabel's size policy to ignored, making the users able to scale the image to whatever size they want when the Fit to Window option is turned on. In the constructor we first create the label and the scroll area. Resize( QGuiApplication ::primaryScreen() - >availableSize() * 3 / 5) ScrollArea - >setBackgroundRole( QPalette ::Dark) ImageLabel - >setSizePolicy( QSizePolicy ::Ignored, QSizePolicy ::Ignored) ImageLabel - >setBackgroundRole( QPalette ::Base) : QMainWindow(parent), imageLabel( new QLabel) ImageViewer ::ImageViewer( QWidget *parent) In turn, scaleImage() uses adjustScrollBar() to preserve the focal point after scaling an image. The zoom slots use scaleImage() to perform the zooming.
#IMAGEVIEWER UPDATE UPDATE#
We use the updateActions() function to update the menu entries when a new image is loaded, or when the Fit to Window option is toggled. We use createActions() and createMenus() when constructing the ImageViewer widget. In addition we create four private functions. We reimplement the constructor, and create several private slots to facilitate the menu entries. The ImageViewer class inherits from QMainWindow. #if defined(QT_PRINTSUPPORT_LIB) & QT_CONFIG(printer) QPrinter printer This method can be overridden or extended in subclasses and plugins to react to image changes.Void adjustScrollBar( QScrollBar *scrollBar, double factor) This behaves much like and QWidget.show. The current behavior is not ideal: It saves the image displayed on screen, so all images will be converted to RGB, and the image size is not preserved (resizing the viewer window will alter the size of the saved image). original_image_changed = None redraw() remove_tool(tool) reset_image() save_to_file(filename=None) update_on property image open_file(filename=None) Parameters image_collectionlist of images home/end keysįirst/last image in collection. For example, “5” goes to the image in the middle (i.e.

Select the displayed frame of the image collection using the slider or with the following keyboard shortcuts: left/right arrows ImageViewer class for viewing and interacting with images.ĬollectionViewer class (image_collection, update_on='move', **kwargs) īases: .ImageViewer
