如何重置QCustom3DLabel上的文本

How to reset text on QCustom3DLabel?

本文关键字:文本 QCustom3DLabel 何重置      更新时间:2024-05-24

在以下内容中,我试图更改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单独可以改变文本属性的值,但并没有图形效果。

然而,当我创建了一个新的QCustom3DLabel实例并为此调用setText时,它运行得很好。我只需要从图表中释放以前的标签。