From 4fd5273f6144f25d675c733e83c3137ee3921aef Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 30 Mar 2017 09:43:07 +0200 Subject: hellovulkanwidget example: Add a widget showing debug output Add a tab widget for vulkan info and debug log. Change-Id: I0428bb5b6f847d0e94d62e846d34e4cb69eda5b6 Reviewed-by: Laszlo Agocs --- .../vulkan/hellovulkanwidget/hellovulkanwidget.cpp | 14 +++++++++----- .../vulkan/hellovulkanwidget/hellovulkanwidget.h | 8 +++++--- examples/vulkan/hellovulkanwidget/main.cpp | 21 ++++++++++++++++++++- 3 files changed, 34 insertions(+), 9 deletions(-) (limited to 'examples/vulkan/hellovulkanwidget') diff --git a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp index ecab104399..78de338f1f 100644 --- a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp +++ b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp @@ -52,18 +52,19 @@ #include #include #include -#include +#include #include #include #include #include +#include -MainWindow::MainWindow(VulkanWindow *w) +MainWindow::MainWindow(VulkanWindow *w, QPlainTextEdit *logWidget) : m_window(w) { QWidget *wrapper = QWidget::createWindowContainer(w); - m_info = new QTextEdit; + m_info = new QPlainTextEdit; m_info->setReadOnly(true); m_number = new QLCDNumber(3); @@ -80,7 +81,10 @@ MainWindow::MainWindow(VulkanWindow *w) connect(quitButton, &QPushButton::clicked, qApp, &QCoreApplication::quit); QVBoxLayout *layout = new QVBoxLayout; - layout->addWidget(m_info, 2); + m_infoTab = new QTabWidget(this); + m_infoTab->addTab(m_info, tr("Vulkan Info")); + m_infoTab->addTab(logWidget, tr("Debug Log")); + layout->addWidget(m_infoTab, 2); layout->addWidget(m_number, 1); layout->addWidget(wrapper, 5); layout->addWidget(grabButton, 1); @@ -90,7 +94,7 @@ MainWindow::MainWindow(VulkanWindow *w) void MainWindow::onVulkanInfoReceived(const QString &text) { - m_info->setText(text); + m_info->setPlainText(text); } void MainWindow::onFrameQueued(int colorValue) diff --git a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.h b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.h index b1f4824006..e70d331ae8 100644 --- a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.h +++ b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.h @@ -54,7 +54,8 @@ class VulkanWindow; QT_BEGIN_NAMESPACE -class QTextEdit; +class QTabWidget; +class QPlainTextEdit; class QLCDNumber; QT_END_NAMESPACE @@ -63,7 +64,7 @@ class MainWindow : public QWidget Q_OBJECT public: - MainWindow(VulkanWindow *w); + explicit MainWindow(VulkanWindow *w, QPlainTextEdit *logWidget); public slots: void onVulkanInfoReceived(const QString &text); @@ -72,7 +73,8 @@ public slots: private: VulkanWindow *m_window; - QTextEdit *m_info; + QTabWidget *m_infoTab; + QPlainTextEdit *m_info; QLCDNumber *m_number; }; diff --git a/examples/vulkan/hellovulkanwidget/main.cpp b/examples/vulkan/hellovulkanwidget/main.cpp index 320e015e67..5ddaf90224 100644 --- a/examples/vulkan/hellovulkanwidget/main.cpp +++ b/examples/vulkan/hellovulkanwidget/main.cpp @@ -49,16 +49,35 @@ ****************************************************************************/ #include +#include #include +#include #include +#include #include "hellovulkanwidget.h" Q_LOGGING_CATEGORY(lcVk, "qt.vulkan") +static QPointer messageLogWidget; +static QtMessageHandler oldMessageHandler = nullptr; + +static void messageHandler(QtMsgType msgType, const QMessageLogContext &logContext, const QString &text) +{ + if (!messageLogWidget.isNull()) + messageLogWidget->appendPlainText(text); + if (oldMessageHandler) + oldMessageHandler(msgType, logContext, text); +} + int main(int argc, char *argv[]) { QApplication app(argc, argv); + messageLogWidget = new QPlainTextEdit(QLatin1String(QLibraryInfo::build()) + QLatin1Char('\n')); + messageLogWidget->setReadOnly(true); + + oldMessageHandler = qInstallMessageHandler(messageHandler); + QLoggingCategory::setFilterRules(QStringLiteral("qt.vulkan=true")); QVulkanInstance inst; @@ -82,7 +101,7 @@ int main(int argc, char *argv[]) VulkanWindow *vulkanWindow = new VulkanWindow; vulkanWindow->setVulkanInstance(&inst); - MainWindow mainWindow(vulkanWindow); + MainWindow mainWindow(vulkanWindow, messageLogWidget.data()); QObject::connect(vulkanWindow, &VulkanWindow::vulkanInfoReceived, &mainWindow, &MainWindow::onVulkanInfoReceived); QObject::connect(vulkanWindow, &VulkanWindow::frameQueued, &mainWindow, &MainWindow::onFrameQueued); -- cgit v1.2.3