mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-08 02:17:43 +08:00
qt 6.5.1 original
This commit is contained in:
15
tests/manual/widgets/kernel/setscreen/CMakeLists.txt
Normal file
15
tests/manual/widgets/kernel/setscreen/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## setscreen Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_manual_test(setscreen
|
||||
GUI
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Widgets
|
||||
)
|
108
tests/manual/widgets/kernel/setscreen/main.cpp
Normal file
108
tests/manual/widgets/kernel/setscreen/main.cpp
Normal file
@ -0,0 +1,108 @@
|
||||
// Copyright (C) 2020 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QtWidgets>
|
||||
|
||||
class ScreenWidget : public QWidget
|
||||
{
|
||||
public:
|
||||
ScreenWidget(QWidget *parent)
|
||||
: QWidget(parent, Qt::Window)
|
||||
{
|
||||
textEdit = new QTextEdit;
|
||||
textEdit->setReadOnly(true);
|
||||
|
||||
QHBoxLayout *layout = new QHBoxLayout;
|
||||
layout->addWidget(textEdit);
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
void updateText()
|
||||
{
|
||||
QString text = "<html><body>";
|
||||
text += QString("<p>Screen: %1\n</p>").arg(screen()->name());
|
||||
text += QString("<p>DPR: %1\n</p>").arg(screen()->devicePixelRatio());
|
||||
text += QString("</body></html>");
|
||||
|
||||
textEdit->setText(text);
|
||||
}
|
||||
|
||||
private:
|
||||
QTextEdit *textEdit;
|
||||
};
|
||||
|
||||
class Controller : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Controller()
|
||||
{
|
||||
QPushButton *screenButton = new QPushButton;
|
||||
screenButton->setText("Show on Screen");
|
||||
screenButton->setEnabled(false);
|
||||
connect(screenButton, &QAbstractButton::clicked, this, &Controller::setScreen);
|
||||
|
||||
QPushButton *exitButton = new QPushButton;
|
||||
exitButton->setText("E&xit");
|
||||
connect(exitButton, &QAbstractButton::clicked, QApplication::instance(), &QCoreApplication::quit);
|
||||
|
||||
QHBoxLayout *actionLayout = new QHBoxLayout;
|
||||
actionLayout->addWidget(screenButton);
|
||||
actionLayout->addWidget(exitButton);
|
||||
|
||||
QGroupBox *radioGroup = new QGroupBox;
|
||||
radioGroup->setTitle(QLatin1String("Select target screen"));
|
||||
|
||||
QVBoxLayout *groupLayout = new QVBoxLayout;
|
||||
const auto screens = QGuiApplication::screens();
|
||||
int count = 0;
|
||||
for (const auto &screen : screens) {
|
||||
QRadioButton *choice = new QRadioButton;
|
||||
choice->setText(QString(QLatin1String("%1: %2")).arg(count).arg(screen->name()));
|
||||
connect(choice, &QAbstractButton::toggled, this, [=](bool on){
|
||||
if (on)
|
||||
targetScreen = count;
|
||||
screenButton->setEnabled(targetScreen != -1);
|
||||
});
|
||||
groupLayout->addWidget(choice);
|
||||
++count;
|
||||
}
|
||||
radioGroup->setLayout(groupLayout);
|
||||
|
||||
QVBoxLayout *layout = new QVBoxLayout;
|
||||
layout->addWidget(radioGroup);
|
||||
layout->addLayout(actionLayout);
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
private slots:
|
||||
void setScreen()
|
||||
{
|
||||
QScreen *screen = QGuiApplication::screens().at(targetScreen);
|
||||
if (!widget) {
|
||||
widget = new ScreenWidget(this);
|
||||
widget->setAttribute(Qt::WA_DeleteOnClose);
|
||||
widget->setWindowTitle("Normal Window");
|
||||
}
|
||||
widget->setScreen(screen);
|
||||
widget->show();
|
||||
widget->updateText();
|
||||
}
|
||||
|
||||
private:
|
||||
QPointer<ScreenWidget> widget = nullptr;
|
||||
int targetScreen = -1;
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
Controller controller;
|
||||
controller.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
#include "main.moc"
|
3
tests/manual/widgets/kernel/setscreen/setscreen.pro
Normal file
3
tests/manual/widgets/kernel/setscreen/setscreen.pro
Normal file
@ -0,0 +1,3 @@
|
||||
TEMPLATE = app
|
||||
SOURCES = main.cpp
|
||||
QT += widgets
|
Reference in New Issue
Block a user