mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 00:05:25 +08:00
qt 6.5.1 original
This commit is contained in:
6
tests/benchmarks/widgets/styles/CMakeLists.txt
Normal file
6
tests/benchmarks/widgets/styles/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if(TARGET Qt::Widgets)
|
||||
add_subdirectory(qstylesheetstyle)
|
||||
endif()
|
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qstylesheetstyle Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qstylesheetstyle
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
Qt::Widgets
|
||||
)
|
164
tests/benchmarks/widgets/styles/qstylesheetstyle/main.cpp
Normal file
164
tests/benchmarks/widgets/styles/qstylesheetstyle/main.cpp
Normal file
@ -0,0 +1,164 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
// This file contains benchmarks for QRect/QRectF functions.
|
||||
|
||||
#include <QtWidgets/QWidget>
|
||||
#include <QtWidgets/QGridLayout>
|
||||
#include <QtWidgets/QPushButton>
|
||||
#include <QtWidgets/QComboBox>
|
||||
#include <QtWidgets/QSpinBox>
|
||||
#include <QtWidgets/QCheckBox>
|
||||
#include <QtWidgets/QRadioButton>
|
||||
#include <QtWidgets/QLabel>
|
||||
#include <QtWidgets/QProgressBar>
|
||||
#include <QtWidgets/QLineEdit>
|
||||
#include <qtest.h>
|
||||
|
||||
class tst_qstylesheetstyle : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void empty();
|
||||
void empty_events();
|
||||
|
||||
void simple();
|
||||
void simple_events();
|
||||
|
||||
void grid_data();
|
||||
void grid();
|
||||
|
||||
private:
|
||||
QWidget *buildSimpleWidgets();
|
||||
|
||||
};
|
||||
|
||||
|
||||
QWidget *tst_qstylesheetstyle::buildSimpleWidgets()
|
||||
{
|
||||
QWidget *w = new QWidget();
|
||||
QGridLayout *layout = new QGridLayout(w);
|
||||
w->setLayout(layout);
|
||||
layout->addWidget(new QPushButton("pushButton") ,0,0);
|
||||
layout->addWidget(new QComboBox() ,0,1);
|
||||
layout->addWidget(new QCheckBox("checkBox") ,0,2);
|
||||
layout->addWidget(new QRadioButton("radioButton") ,0,3);
|
||||
layout->addWidget(new QLineEdit() ,1,0);
|
||||
layout->addWidget(new QLabel("label") ,1,1);
|
||||
layout->addWidget(new QSpinBox() ,1,2);
|
||||
layout->addWidget(new QProgressBar() ,1,3);
|
||||
return w;
|
||||
}
|
||||
|
||||
void tst_qstylesheetstyle::empty()
|
||||
{
|
||||
QWidget *w = buildSimpleWidgets();
|
||||
w->setStyleSheet("/* */");
|
||||
QApplication::processEvents();
|
||||
int i = 0;
|
||||
QBENCHMARK {
|
||||
w->setStyleSheet("/*" + QString::number(i) + "*/");
|
||||
i++; // we want a different string in case we have severals iterations
|
||||
}
|
||||
delete w;
|
||||
}
|
||||
|
||||
void tst_qstylesheetstyle::empty_events()
|
||||
{
|
||||
QWidget *w = buildSimpleWidgets();
|
||||
w->setStyleSheet("/* */");
|
||||
QApplication::processEvents();
|
||||
int i = 0;
|
||||
QBENCHMARK {
|
||||
w->setStyleSheet("/*" + QString::number(i) + "*/");
|
||||
i++; // we want a different string in case we have severals iterations
|
||||
qApp->processEvents();
|
||||
}
|
||||
delete w;
|
||||
}
|
||||
|
||||
static const char *simple_css =
|
||||
" QLineEdit { background: red; } QPushButton { border: 1px solid yellow; color: pink; } \n"
|
||||
" QCheckBox { margin: 3px 5px; background-color:red; } QAbstractButton { background-color: #456; } \n"
|
||||
" QFrame { padding: 3px; } QLabel { color: black } QSpinBox:hover { background-color:blue; } ";
|
||||
|
||||
void tst_qstylesheetstyle::simple()
|
||||
{
|
||||
QWidget *w = buildSimpleWidgets();
|
||||
w->setStyleSheet("/* */");
|
||||
QApplication::processEvents();
|
||||
int i = 0;
|
||||
QBENCHMARK {
|
||||
w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
|
||||
i++; // we want a different string in case we have severals iterations
|
||||
}
|
||||
delete w;
|
||||
}
|
||||
|
||||
void tst_qstylesheetstyle::simple_events()
|
||||
{
|
||||
QWidget *w = buildSimpleWidgets();
|
||||
w->setStyleSheet("/* */");
|
||||
QApplication::processEvents();
|
||||
int i = 0;
|
||||
QBENCHMARK {
|
||||
w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
|
||||
i++; // we want a different string in case we have severals iterations
|
||||
qApp->processEvents();
|
||||
}
|
||||
delete w;
|
||||
}
|
||||
|
||||
void tst_qstylesheetstyle::grid_data()
|
||||
{
|
||||
QTest::addColumn<bool>("events");
|
||||
QTest::addColumn<bool>("show");
|
||||
QTest::addColumn<int>("N");
|
||||
for (int n = 5; n <= 25; n += 5) {
|
||||
const QByteArray nString = QByteArray::number(n*n);
|
||||
QTest::newRow(QByteArray("simple--" + nString).constData()) << false << false << n;
|
||||
QTest::newRow(QByteArray("events--" + nString).constData()) << true << false << n;
|
||||
QTest::newRow(QByteArray("show--" + nString).constData()) << true << true << n;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void tst_qstylesheetstyle::grid()
|
||||
{
|
||||
QFETCH(bool, events);
|
||||
QFETCH(bool, show);
|
||||
QFETCH(int, N);
|
||||
|
||||
QWidget *w = new QWidget();
|
||||
QGridLayout *layout = new QGridLayout(w);
|
||||
w->setLayout(layout);
|
||||
QString stylesheet;
|
||||
for(int x=0; x<N ;x++)
|
||||
for(int y=0; y<N ;y++) {
|
||||
QLabel *label = new QLabel(QString::number(y * N + x));
|
||||
layout->addWidget(label ,x,y);
|
||||
label->setObjectName(QString("label%1").arg(y * N + x));
|
||||
stylesheet += QString("#label%1 { background-color: rgb(0,%2,%3); color: rgb(%2,%3,255); } ").arg(y*N+x).arg(y*255/N).arg(x*255/N);
|
||||
}
|
||||
|
||||
w->setStyleSheet("/* */");
|
||||
if(show) {
|
||||
w->show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(w));
|
||||
QApplication::processEvents();
|
||||
QTest::qWait(30);
|
||||
QApplication::processEvents();
|
||||
}
|
||||
QApplication::processEvents();
|
||||
int i = 0;
|
||||
QBENCHMARK {
|
||||
w->setStyleSheet(stylesheet + "/*" + QString::number(i) + "*/");
|
||||
i++; // we want a different string in case we have severals iterations
|
||||
if(events)
|
||||
qApp->processEvents();
|
||||
}
|
||||
delete w;
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_qstylesheetstyle)
|
||||
|
||||
#include "main.moc"
|
Reference in New Issue
Block a user