summaryrefslogtreecommitdiffstats
path: root/tests/manual/diaglib/qwidgetdump.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-06-13 09:01:02 +0200
committerLiang Qi <liang.qi@qt.io>2016-06-13 12:46:46 +0200
commit511790fd1af1e2886a0e2e8dd4308099705cd815 (patch)
treeb42aee537a6103cd064f9f41ae2889b09b79fd23 /tests/manual/diaglib/qwidgetdump.cpp
parent1542d8881fc5ccbc5918cd4acbe4091ebbd24508 (diff)
parentcbe332405aa22257d432f1797b325f5e57007c20 (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts: config_help.txt configure mkspecs/features/uikit/sdk.prf src/corelib/global/qhooks.cpp src/corelib/io/qfilesystemwatcher.cpp src/corelib/io/qlockfile_unix.cpp src/corelib/tools/qalgorithms.h src/gui/kernel/qwindowsysteminterface.h src/gui/text/qtextdocument_p.cpp src/network/access/access.pri src/network/access/qnetworkaccessmanager.cpp src/network/access/qnetworkreplynsurlconnectionimpl.mm src/src.pro src/testlib/qtestcase.cpp src/widgets/kernel/qwidgetbackingstore_p.h src/widgets/styles/qwindowscestyle.cpp src/widgets/styles/qwindowsmobilestyle.cpp tests/auto/corelib/io/qdiriterator/qdiriterator.pro tests/auto/corelib/io/qfileinfo/qfileinfo.pro tests/auto/gui/kernel/qwindow/BLACKLIST tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp tools/configure/configureapp.cpp Change-Id: Ibf7fb9c8cf263a810ade82f821345d0725c57c67
Diffstat (limited to 'tests/manual/diaglib/qwidgetdump.cpp')
-rw-r--r--tests/manual/diaglib/qwidgetdump.cpp46
1 files changed, 44 insertions, 2 deletions
diff --git a/tests/manual/diaglib/qwidgetdump.cpp b/tests/manual/diaglib/qwidgetdump.cpp
index 0ccf109ebb..10cfde510d 100644
--- a/tests/manual/diaglib/qwidgetdump.cpp
+++ b/tests/manual/diaglib/qwidgetdump.cpp
@@ -40,11 +40,50 @@
namespace QtDiag {
+static const char *qtWidgetClasses[] = {
+ "QAbstractItemView", "QAbstractScrollArea", "QAbstractSlider", "QAbstractSpinBox",
+ "QCalendarWidget", "QCheckBox", "QColorDialog", "QColumnView", "QComboBox",
+ "QCommandLinkButton", "QDateEdit", "QDateTimeEdit", "QDesktopWidget", "QDial",
+ "QDialog", "QDialogButtonBox", "QDockWidget", "QDoubleSpinBox", "QErrorMessage",
+ "QFileDialog", "QFontComboBox", "QFontDialog", "QFrame", "QGraphicsView",
+ "QGroupBox", "QHeaderView", "QInputDialog", "QLCDNumber", "QLabel", "QLineEdit",
+ "QListView", "QListWidget", "QMainWindow", "QMdiArea", "QMdiSubWindow", "QMenu",
+ "QMenuBar", "QMessageBox", "QOpenGLWidget", "QPlainTextEdit", "QProgressBar",
+ "QProgressDialog", "QPushButton", "QRadioButton", "QRubberBand", "QScrollArea",
+ "QScrollBar", "QSlider", "QSpinBox", "QSplashScreen", "QSplitter",
+ "QStackedWidget", "QStatusBar", "QTabBar", "QTabWidget", "QTableView",
+ "QTableWidget", "QTextBrowser", "QTextEdit", "QTimeEdit", "QToolBar",
+ "QToolBox", "QToolButton", "QTreeView", "QTreeWidget", "QWidget",
+ "QWizard", "QWizardPage"
+};
+
+static bool isQtWidget(const char *className)
+{
+ for (size_t i = 0, count = sizeof(qtWidgetClasses) / sizeof(qtWidgetClasses[0]); i < count; ++i) {
+ if (!qstrcmp(className, qtWidgetClasses[i]))
+ return true;
+ }
+ return false;
+}
+
+static void formatWidgetClass(QTextStream &str, const QWidget *w)
+{
+ const QMetaObject *mo = w->metaObject();
+ str << mo->className();
+ while (!isQtWidget(mo->className())) {
+ mo = mo->superClass();
+ str << ':' << mo->className();
+ }
+ const QString on = w->objectName();
+ if (!on.isEmpty())
+ str << "/\"" << on << '"';
+}
+
static void dumpWidgetRecursion(QTextStream &str, const QWidget *w,
FormatWindowOptions options, int depth = 0)
{
indentStream(str, 2 * depth);
- formatObject(str, w);
+ formatWidgetClass(str, w);
str << ' ' << (w->isVisible() ? "[visible] " : "[hidden] ");
if (const WId nativeWinId = w->internalWinId())
str << "[native: " << hex << showbase << nativeWinId << dec << noshowbase << "] ";
@@ -109,7 +148,10 @@ void dumpAllWidgets(FormatWindowOptions options, const QWidget *root)
foreach (QWidget *tw, topLevels)
dumpWidgetRecursion(str, tw, options);
#if QT_VERSION >= 0x050400
- qDebug().noquote() << d;
+ {
+ foreach (const QString &line, d.split(QLatin1Char('\n')))
+ qDebug().noquote() << line;
+ }
#else
qDebug("%s", qPrintable(d));
#endif