Window Flags Example▲
Sélectionnez
/**
**************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
***************************************************************************
*/
#include <QtWidgets>
#include
"controllerwindow.h"
ControllerWindow::
ControllerWindow()
{
previewWindow =
new
PreviewWindow(this
);
createTypeGroupBox();
createHintsGroupBox();
quitButton =
new
QPushButton(tr("&Quit"
));
connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
QHBoxLayout *
bottomLayout =
new
QHBoxLayout;
bottomLayout-&
gt;addStretch();
bottomLayout-&
gt;addWidget(quitButton);
QHBoxLayout *
mainLayout =
new
QHBoxLayout;
mainLayout-&
gt;addWidget(typeGroupBox);
mainLayout-&
gt;addWidget(hintsGroupBox);
mainLayout-&
gt;addLayout(bottomLayout);
setLayout(mainLayout);
setWindowTitle(tr("Window Flags"
));
updatePreview();
}
void
ControllerWindow::
updatePreview()
{
Qt::
WindowFlags flags =
0
;
if
(windowRadioButton-&
gt;isChecked()) {
flags =
Qt::
Window;
}
else
if
(dialogRadioButton-&
gt;isChecked()) {
flags =
Qt::
Dialog;
}
else
if
(sheetRadioButton-&
gt;isChecked()) {
flags =
Qt::
Sheet;
}
else
if
(drawerRadioButton-&
gt;isChecked()) {
flags =
Qt::
Drawer;
}
else
if
(popupRadioButton-&
gt;isChecked()) {
flags =
Qt::
Popup;
}
else
if
(toolRadioButton-&
gt;isChecked()) {
flags =
Qt::
Tool;
}
else
if
(toolTipRadioButton-&
gt;isChecked()) {
flags =
Qt::
ToolTip;
}
else
if
(splashScreenRadioButton-&
gt;isChecked()) {
flags =
Qt::
SplashScreen;
}
if
(msWindowsFixedSizeDialogCheckBox-&
gt;isChecked())
flags |=
Qt::
MSWindowsFixedSizeDialogHint;
if
(x11BypassWindowManagerCheckBox-&
gt;isChecked())
flags |=
Qt::
X11BypassWindowManagerHint;
if
(framelessWindowCheckBox-&
gt;isChecked())
flags |=
Qt::
FramelessWindowHint;
if
(windowNoShadowCheckBox-&
gt;isChecked())
flags |=
Qt::
NoDropShadowWindowHint;
if
(windowTitleCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowTitleHint;
if
(windowSystemMenuCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowSystemMenuHint;
if
(windowMinimizeButtonCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowMinimizeButtonHint;
if
(windowMaximizeButtonCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowMaximizeButtonHint;
if
(windowCloseButtonCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowCloseButtonHint;
if
(windowContextHelpButtonCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowContextHelpButtonHint;
if
(windowShadeButtonCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowShadeButtonHint;
if
(windowStaysOnTopCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowStaysOnTopHint;
if
(windowStaysOnBottomCheckBox-&
gt;isChecked())
flags |=
Qt::
WindowStaysOnBottomHint;
if
(customizeWindowHintCheckBox-&
gt;isChecked())
flags |=
Qt::
CustomizeWindowHint;
previewWindow-&
gt;setWindowFlags(flags);
QPoint pos =
previewWindow-&
gt;pos();
if
(pos.x() &
lt; 0
)
pos.setX(0
);
if
(pos.y() &
lt; 0
)
pos.setY(0
);
previewWindow-&
gt;move(pos);
previewWindow-&
gt;show();
}
void
ControllerWindow::
createTypeGroupBox()
{
typeGroupBox =
new
QGroupBox(tr("Type"
));
windowRadioButton =
createRadioButton(tr("Window"
));
dialogRadioButton =
createRadioButton(tr("Dialog"
));
sheetRadioButton =
createRadioButton(tr("Sheet"
));
drawerRadioButton =
createRadioButton(tr("Drawer"
));
popupRadioButton =
createRadioButton(tr("Popup"
));
toolRadioButton =
createRadioButton(tr("Tool"
));
toolTipRadioButton =
createRadioButton(tr("Tooltip"
));
splashScreenRadioButton =
createRadioButton(tr("Splash screen"
));
windowRadioButton-&
gt;setChecked(true
);
QGridLayout *
layout =
new
QGridLayout;
layout-&
gt;addWidget(windowRadioButton, 0
, 0
);
layout-&
gt;addWidget(dialogRadioButton, 1
, 0
);
layout-&
gt;addWidget(sheetRadioButton, 2
, 0
);
layout-&
gt;addWidget(drawerRadioButton, 3
, 0
);
layout-&
gt;addWidget(popupRadioButton, 0
, 1
);
layout-&
gt;addWidget(toolRadioButton, 1
, 1
);
layout-&
gt;addWidget(toolTipRadioButton, 2
, 1
);
layout-&
gt;addWidget(splashScreenRadioButton, 3
, 1
);
typeGroupBox-&
gt;setLayout(layout);
}
void
ControllerWindow::
createHintsGroupBox()
{
hintsGroupBox =
new
QGroupBox(tr("Hints"
));
msWindowsFixedSizeDialogCheckBox =
createCheckBox(tr("MS Windows fixed size dialog"
));
x11BypassWindowManagerCheckBox =
createCheckBox(tr("X11 bypass window manager"
));
framelessWindowCheckBox =
createCheckBox(tr("Frameless window"
));
windowNoShadowCheckBox =
createCheckBox(tr("No drop shadow"
));
windowTitleCheckBox =
createCheckBox(tr("Window title"
));
windowSystemMenuCheckBox =
createCheckBox(tr("Window system menu"
));
windowMinimizeButtonCheckBox =
createCheckBox(tr("Window minimize button"
));
windowMaximizeButtonCheckBox =
createCheckBox(tr("Window maximize button"
));
windowCloseButtonCheckBox =
createCheckBox(tr("Window close button"
));
windowContextHelpButtonCheckBox =
createCheckBox(tr("Window context help button"
));
windowShadeButtonCheckBox =
createCheckBox(tr("Window shade button"
));
windowStaysOnTopCheckBox =
createCheckBox(tr("Window stays on top"
));
windowStaysOnBottomCheckBox =
createCheckBox(tr("Window stays on bottom"
));
customizeWindowHintCheckBox=
createCheckBox(tr("Customize window"
));
QGridLayout *
layout =
new
QGridLayout;
layout-&
gt;addWidget(msWindowsFixedSizeDialogCheckBox, 0
, 0
);
layout-&
gt;addWidget(x11BypassWindowManagerCheckBox, 1
, 0
);
layout-&
gt;addWidget(framelessWindowCheckBox, 2
, 0
);
layout-&
gt;addWidget(windowNoShadowCheckBox, 3
, 0
);
layout-&
gt;addWidget(windowTitleCheckBox, 4
, 0
);
layout-&
gt;addWidget(windowSystemMenuCheckBox, 5
, 0
);
layout-&
gt;addWidget(customizeWindowHintCheckBox, 6
, 0
);
layout-&
gt;addWidget(windowMinimizeButtonCheckBox, 0
, 1
);
layout-&
gt;addWidget(windowMaximizeButtonCheckBox, 1
, 1
);
layout-&
gt;addWidget(windowCloseButtonCheckBox, 2
, 1
);
layout-&
gt;addWidget(windowContextHelpButtonCheckBox, 3
, 1
);
layout-&
gt;addWidget(windowShadeButtonCheckBox, 4
, 1
);
layout-&
gt;addWidget(windowStaysOnTopCheckBox, 5
, 1
);
layout-&
gt;addWidget(windowStaysOnBottomCheckBox, 6
, 1
);
hintsGroupBox-&
gt;setLayout(layout);
}
QCheckBox *
ControllerWindow::
createCheckBox(const
QString &
amp;text)
{
QCheckBox *
checkBox =
new
QCheckBox(text);
connect(checkBox, SIGNAL(clicked()), this
, SLOT(updatePreview()));
return
checkBox;
}
QRadioButton *
ControllerWindow::
createRadioButton(const
QString &
amp;text)
{
QRadioButton *
button =
new
QRadioButton(text);
connect(button, SIGNAL(clicked()), this
, SLOT(updatePreview()));
return
button;
}