Всем доброго дня!
Я только начал изучать С++, по этому прошу не пинать! И так, попробую разъяснить что мне нужно сделать.
Создал отдельный виджет QFrame. Отдельный потому что не хочу все сваливать в кучу в MainWindow.
В виджете установлено 10 spinBox, все они зациклены от 0 до 9, нужно что бы они работали как счетчик,
то есть кручу один spinBox и по прохождению его цикла добавлялась или отнималась 1 впереди стоящего spinBox.
Созданный слот frontchangespinBox() работает без вопросов и мне там все понятно,
он добавляет или уменьшает значение впереди стоящего spinBox. Если указываю конкретно на определенный spinBox,
это строки 50 и 51, то все работает но только по указанному spinBox. Через QVector<QSpinBox*> spinbox;
сделал список spinBox, то есть могу просто указать номер spinBox от 0 до 9.
Но вот как мне определить какой я кручу spinBox что бы передать его номер в переменную spin для дальнейшей работы, я не знаю.
Да я по ходу вообще запутался как мне это сделать.
Прошу по возможности у кого есть желание помочь старому радиолюбителю!
[code#include <QDebug>
#include "vfoab.h"
#include "ui_vfoab.h"
VfoAB::VfoAB(QWidget *parent) :
QFrame(parent),
ui(new Ui::VfoAB)
{
ui->setupUi(this);
spinbox.push_back(ui->spinBox_0);
spinbox.push_back(ui->spinBox_1);
spinbox.push_back(ui->spinBox_2);
spinbox.push_back(ui->spinBox_3);
spinbox.push_back(ui->spinBox_4);
spinbox.push_back(ui->spinBox_5);
spinbox.push_back(ui->spinBox_6);
spinbox.push_back(ui->spinBox_7);
spinbox.push_back(ui->spinBox_8);
spinbox.push_back(ui->spinBox_9);
//if (!hasFocus())
// setFocus();
/* if(ui->spinBox_0->hasFocus()) spin = 0;
else if(ui->spinBox_1->hasFocus()) spin = 1;
else if(ui->spinBox_2->hasFocus()) spin = 2;
else if(ui->spinBox_3->hasFocus()) spin = 3;
else if(ui->spinBox_4->hasFocus()) spin = 4;
else if(ui->spinBox_5->hasFocus()) spin = 5;
else if(ui->spinBox_6->hasFocus()) spin = 6;
else if(ui->spinBox_7->hasFocus()) spin = 7;
else if(ui->spinBox_8->hasFocus()) spin = 8;
else if(ui->spinBox_9->hasFocus()) spin = 9;*/
QList<QSpinBox*> spinbox = this->findChildren<QSpinBox*>();
QListIterator<QSpinBox*> it(spinbox); // перебирать список виджетов
QSpinBox *spinBoxField;
while (it.hasNext()) {
spinBoxField = it.next(); // взять каждый виджет в списке
if(QSpinBox *spinBox = qobject_cast<QSpinBox*>(spinBoxField)) {
// проверить, имеет ли итерируемый виджет тип QSpinBox
if (spinBox->hasFocus())
{
connect(spinbox[spin], SIGNAL(valueChanged(int)), SLOT(frontchangespinBox()));
}
}
}
//spin = 1;
//connect(spinbox[spin], SIGNAL(valueChanged(int)), SLOT(frontchangespinBox()));
ui->label->setText(QString().setNum(numspin));
ui->label_5->setText(QString("%1").arg(spin));
}
VfoAB::~VfoAB()
{
delete ui;
}
void VfoAB::frontchangespinBox()
{
upvalspin = spinbox [spin] ->value();
if (upvalspin == 0)
if (upprevspin == 9)
spinbox [spin +1] ->stepUp();
upprevspin = upvalspin;
downvalspin = spinbox [spin] ->value();
if (downvalspin == 9)
if (downprevspin == 0)
spinbox [spin +1] ->stepDown();
downprevspin = downvalspin;
}
]