在以下内容中,我尝试更改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/