Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
previewframe.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#include "previewframe.h"
6
7#include <QtCore/qcoreapplication.h>
8#include <QtCore/qdebug.h>
9#include <QtGui/qpainter.h>
10#include <QtWidgets/qmdiarea.h>
11#include <QtWidgets/qmdisubwindow.h>
12#include <QtGui/qevent.h>
13
15
16namespace qdesigner_internal {
17
18 class PreviewMdiArea: public QMdiArea {
19 public:
20 PreviewMdiArea(QWidget *parent = nullptr) : QMdiArea(parent) {}
21 protected:
22 bool viewportEvent(QEvent *event) override;
23 };
24
25 bool PreviewMdiArea::viewportEvent (QEvent * event) {
26 if (event->type() != QEvent::Paint)
27 return QMdiArea::viewportEvent (event);
28 QWidget *paintWidget = viewport();
29 QPainter p(paintWidget);
30 p.fillRect(rect(), paintWidget->palette().color(backgroundRole()).darker());
31 p.setPen(QPen(Qt::white));
32 //: Palette editor background
33 p.drawText(0, height() / 2, width(), height(), Qt::AlignHCenter,
34 QCoreApplication::translate("qdesigner_internal::PreviewMdiArea", "The moose in the noose\nate the goose who was loose."));
35 return true;
36 }
37
38PreviewFrame::PreviewFrame(QWidget *parent) :
39 QFrame(parent),
40 m_mdiArea(new PreviewMdiArea(this))
41{
42 m_mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
43 m_mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
44 setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
45 setLineWidth(1);
46
47 QVBoxLayout *vbox = new QVBoxLayout(this);
48 vbox->setContentsMargins(QMargins());
49 vbox->addWidget(m_mdiArea);
50
51 setMinimumSize(ensureMdiSubWindow()->minimumSizeHint());
52}
53
54void PreviewFrame::setPreviewPalette(const QPalette &pal)
55{
56 ensureMdiSubWindow()->setPalette(pal);
57}
58
60{
61 m_mdiArea->setActiveSubWindow (active ? ensureMdiSubWindow() : nullptr);
62}
63
64QMdiSubWindow *PreviewFrame::ensureMdiSubWindow()
65{
66 if (!m_mdiSubWindow) {
67 PreviewWidget *previewWidget = new PreviewWidget(m_mdiArea);
68 m_mdiSubWindow = m_mdiArea->addSubWindow(previewWidget, Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
69 m_mdiSubWindow->move(10,10);
70 m_mdiSubWindow->showMaximized();
71 }
72
73 const Qt::WindowStates state = m_mdiSubWindow->windowState();
74 if (state & Qt::WindowMinimized)
75 m_mdiSubWindow->setWindowState(state & ~Qt::WindowMinimized);
76
77 return m_mdiSubWindow;
78}
79}
80
81QT_END_NAMESPACE
void setPreviewPalette(const QPalette &palette)
bool viewportEvent(QEvent *event) override
PreviewMdiArea(QWidget *parent=nullptr)
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.