c++ - 如何在QCustom3DLabel上重置文本?

标签 c++ qt 3d qt5 data-visualization

在以下内容中,我尝试更改QCustom3DLabel的文本,但它没有更改。那么,关于如何处理此问题的任何建议?

MainWidget::MainWidget(QWidget *parent) : QWidget(parent)
{
    resize(800,600);
    auto vLayout = new QVBoxLayout(this);

    auto graph = new Q3DBars;
    vLayout->addWidget(QWidget::createWindowContainer(graph));

    auto camera = graph->scene()->activeCamera();
    camera->setCameraPreset(Q3DCamera::CameraPresetIsometricLeft);

    graph->axes()[0]->setRange(0,5);
    graph->axes()[1]->setRange(0,5);
    graph->axes()[2]->setRange(0,5);

    label = new QCustom3DLabel;
    label->setText("123");
    label->setScaling({5,5,5});
    label->setPosition({1,1,1});
    graph->addCustomItem(label);

    auto timer = new QTimer;
    connect(timer, &QTimer::timeout, this, &MainWidget::setText);
    timer->start(2000);
}

void MainWidget::setText()
{
    qDebug() << "settext";
    label->setText("1234567890");
}

最佳答案

我复制了代码,更改其他属性的问题也相同(例如,背景色也没有更改)。

无论如何,在这里我写了一个不太干净的代码,可用于更改标签文本:

void MainWidget::setText()
{
   graph->releaseCustomItem(label);
   QCustom3DLabel* newlabel = new QCustom3DLabel(nullptr);
   newlabel->setScaling(label->scaling());
   newlabel->setPosition(label->position());
   newlabel->setText("1234567890");
   label = newlabel;
   graph->addCustomItem(label);
}

我不知道为什么,但是仅setText可以更改text属性的值,但没有图形效果。

但是,当我创建了一个新的QCustom3DLabel实例并为此调用了setText时,它运行良好。我只需要从图中释放以前的标签即可。

关于c++ - 如何在QCustom3DLabel上重置文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61678761/

相关文章:

python - PyQt 短信气泡小部件

c++ - Qt3D 几何着色器可以在 QML 中工作,但不能在 C++ 中工作

c++ - Irrlicht - 创建 3D 平面/立方体网格

c++ - 通过参数个数推导重载成员函数的函数参数类型

复杂浮点类型的 C++20 概念

c++ - C++ 11 标准是否保证 std::atomic<> 被实现为无锁操作?

javascript - 三人组 : Rotate sphere(globe) to another point(city) on the sphere itself

c++ - 使用 C++ 测量跨网络的 2 个应用程序之间的数据传输速率(带宽),如何获得无偏见和准确的结果?

c++ - 多态QSharedPointer

math - 检查空间中的 4 个点是否是矩形的角点