summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-30 09:43:07 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-30 15:04:12 +0000
commit4fd5273f6144f25d675c733e83c3137ee3921aef (patch)
tree6a3410a8b0b7a0dd3e5bbbc39623577cfdef927e
parent2cc1ff3bc2a247ada8fb62f37613d763fb664cf0 (diff)
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 <laszlo.agocs@qt.io>
-rw-r--r--examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp14
-rw-r--r--examples/vulkan/hellovulkanwidget/hellovulkanwidget.h8
-rw-r--r--examples/vulkan/hellovulkanwidget/main.cpp21
3 files changed, 34 insertions, 9 deletions
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 <QVulkanFunctions>
#include <QApplication>
#include <QVBoxLayout>
-#include <QTextEdit>
+#include <QPlainTextEdit>
#include <QPushButton>
#include <QLCDNumber>
#include <QFileDialog>
#include <QMessageBox>
+#include <QTabWidget>
-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 <QApplication>
+#include <QPlainTextEdit>
#include <QVulkanInstance>
+#include <QLibraryInfo>
#include <QLoggingCategory>
+#include <QPointer>
#include "hellovulkanwidget.h"
Q_LOGGING_CATEGORY(lcVk, "qt.vulkan")
+static QPointer<QPlainTextEdit> 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);