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>
This commit is contained in:
Friedemann Kleint 2017-03-30 09:43:07 +02:00
parent 2cc1ff3bc2
commit 4fd5273f61
3 changed files with 34 additions and 9 deletions

View File

@ -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)

View File

@ -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;
};

View File

@ -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);