如何在信号中发送值

  • 本文关键字:信号 qt qt5
  • 更新时间 :
  • 英文 :


我正在将QVBoxLayout作为参数传递给方法并在运行时创建控件。

QDoubleSpinBox *test; // Global variable at the top of the cpp file
void Sph::CreateUI(QVBoxLayout* layout)
{
QDoubleSpinBox *PositionXSpinBox = new QDoubleSpinBox;
test = PositionXSpinBox;
PositionXSpinBox->setRange(-10000, 10000);
PositionXSpinBox->setSingleStep(1.0);
PositionXSpinBox->setValue(40);
layout->addWidget(PositionXSpinBox);
bool ok = QObject::connect(PositionXSpinBox, SIGNAL(valueChanged(double)), 
this, SLOT( ParamChange()));
}

在我当前的情况下,我在.cpp文件的顶部声明全局变量,例如在本例中QDoubleSpinBox *test;ParamChanged函数中,我正在更改类的私有变量.

void Sph::ParamChange()
{
this->fSegments = test->value();
this->isChanged = true;
}

1) 是否可以在连接信号本身中发送 PositionXSpinBox 的值。

我不完全确定你是否问这个简单的事情,但是是的,插槽可以接收信号的参数。否则信号参数将没有多大意义,现在它们会吗?

像这样的东西

void Sph::ParamChange(double value)
{
this->fSegments = value;
this->isChanged = true;
}

而这个

bool ok = QObject::connect(PositionXSpinBox, SIGNAL(valueChanged(double)), 
this, SLOT( ParamChange(double)));

进行此连接的更现代方法是使用新语法:

QObject::connect(PositionXSpinBox, &QSpinBox::valueChanged,
this, &Sph::ParamChange);

这是可取的,因为例如,如果您在方法名称中输入拼写错误,它将给出编译时错误。


作为旁注,如果这确实是您的问题,我强烈建议您浏览Qt基础知识,例如:https://doc.qt.io/qt-5/signalsandslots.html

相关内容

  • 没有找到相关文章