前言
效果图:
一、制作uip文件
- 添加text
- 打开datainput
- 添加变量(这里添加了类型为string的变量myText)
- 把添加的变量应用到text对象里
二、QWidget项目应用
pro文件
QT += core gui
QT += widgets qml quick studio3d
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
DESTDIR = ../MyInput
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
rsc.qrc
mainwindow文件(h, cpp)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <qstudio3dglobal.h>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <Q3DSSurfaceViewer>
#include <QWindow>
#include <QSurface>
#include <Q3DSPresentation>
#include <QOpenGLContext>
#include <Q3DSDataInput>
#include <QVector3D>
#include <QTimer>
#include <QDir>
#include <QDebug>
#include <QDateTime>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_set1_clicked();
private:
Ui::MainWindow *ui;
QOpenGLContext context;
QWindow window;
Q3DSSurfaceViewer viewer;
Q3DSDataInput* m_pInput1;
void init();
public slots:
void slotInput();
void slotUpdate();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::init()
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QSurfaceFormat::setDefaultFormat(Q3DS::surfaceFormat());
if (!context.create())
qFatal("Failed to create OpenGL context");
window.setSurfaceType(QSurface::OpenGLSurface);
window.setFormat(context.format());
window.create();
viewer.presentation()->setSource(QUrl(QStringLiteral("qrc:presentation/Input3.uia")));
viewer.setUpdateInterval(0); // enable automatic updates
QObject::connect(&viewer, &Q3DSSurfaceViewer::presentationReady, this, &MainWindow::slotInput);
// QObject::connect(&viewer, &Q3DSSurfaceViewer::frameUpdate, this, &MainWindow::slotUpdate);
viewer.create(&window, &context);
window.setTitle(QStringLiteral("hello 3dStudio"));
window.resize(800, 600);
window.show();
}
void MainWindow::slotInput()
{
qDebug() << "Presentation ready";
const auto diList = viewer.presentation()->dataInputs();
for (const auto &it : diList) {
Q3DSDataInput *dynDi = it;
if (dynDi->name() == QLatin1String("myText"))
{
if (dynDi->isValid())
{
m_pInput1 = dynDi;
}
}
}
auto diWithMetadata = viewer.presentation()->dataInputs("metadata1");
qDebug() << "Datainputs with metadatakey metadata1: ";
for (auto &it : diWithMetadata)
qDebug() << it->name();
}
void MainWindow::slotUpdate()
{
// qDebug()<<QDateTime::currentDateTime().toString("hh:MM:ss.zzz")<<" slotUpdate";
// if (m_pInput1->isValid() && m_bFlag1 == true)
// {
// m_pInput1->setValue(ui->lineEdit_myText1->text());
// m_bFlag1 = false;
// }
}
void MainWindow::on_pushButton_set1_clicked()
{
if (m_pInput1 != NULL && m_pInput1->isValid())
{
m_pInput1->setValue(ui->lineEdit_myText1->text());
ui->lineEdit_myText1->setText("");
}
}