Как я могу вытащить имена моих спинбокс? Я попытался взглянуть на большую часть документации, однако я не мог найти ничего, что могло бы показать имена каждого из дочерних спинбокс. Я попытался изменить результат на строку. Тем не менее, я просто получаю Hex или Long Int, от адреса, который я себе представлял, вместо этого вернулся.Я хочу получить имена моих спинбокс в Qt
QList<QSpinBox*> spinBoxes= findChildren<QSpinBox*>();
//create the QSignalMapper object
QSignalMapper* signalMapper= new QSignalMapper(this);
//loop through your spinboxes list
QSpinBox* spinBox;
foreach(spinBox, spinBoxes){
//setup mapping for each spin box
connect(spinBox, SIGNAL(valueChanged(int)), signalMapper, SLOT(map()));
signalMapper->setMapping(spinBox, spinBox);
}
//connect the unified mapped(QWidget*) signal to your spinboxWrite slot
connect(signalMapper, SIGNAL(mapped(QWidget*)), this, SLOT(spinboxWrite(QWidget*)));
.
.
.
void GuiTest::SpinBoxChanged(QWidget* wSp){
QSpinBox* sp= (QSpinBox*)wSp; //now sp is a pointer to the QSpinBox that emitted the valueChanged signal
int value = sp->value(); //and value is its value after the change
//do whatever you want to do with them here. . .
qDebug() << value << "SpinBoxChanged";
}
void GuiTest::spinboxWrite(QWidget* e){
SpinBoxChanged(e);
QString* value = (QString*)e;
qDebug() << e << value << " SpinBoxWrite";
}
Обратите внимание QDebug() < < х как это, где у меня возникают проблемы при получении информации о spinboxes
Есть ли причина, по которой вы не можете хранить их в качестве переменных-членов? – GraphicsMuncher
Не проще ли дать им имя и использовать его для ссылки? – RvdK
Нет, потому что это означает как-то посмотреть на это имя. 'findChild', карта, хеш и т. д. имеют затраты времени выполнения, вероятно, на порядок больше, чем просто запоминание указателей как переменных-членов. – peppe