Проверьте, является ли текст из ComboBox таким же, как у другого ComboBox
У меня есть 8 ComboBox с тегом channel_1 ... channel_8.
Я хочу проверить, выбирает ли пользователь одну и ту же опцию в двух из них, кроме первой, которая называется "нет".
Я создал этот слот, но final_a
а также final_b
Созданные переменные не распознаются.
// Slot to check if there's two channels with the same option choosed
void gui::check_channels_options()
{
for (int a = 1; a <= 8; a++)
{
for (int b = 1; b <= 8; b++)
{
if(a != b)
{
QString A, B;
A.setNum(a);
B.setNum(b);
QString Na, Nb;
Na = "channel_";
Na += A;
Nb = "channel_";
Nb += B;
QByteArray bytes_a = Na.toAscii();
char* final_a = bytes_a.data();
QByteArray bytes_b = Nb.toAscii();
char* final_b = bytes_b.data();
if((ui->final_a->currentText() == ui->final_b->currentText()) &&
(ui->final_a->currentIndex() != 0 && ui->fnal_b->currentIndex() != 0))
{
QMessageBox::warning(this,"Error","Channel " + a + " has the same option as channel " + b,QMessageBox::Ok);
}
else
{
}
}
}
}
}
Может кто-нибудь мне помочь?
2 ответа
Вы декларируете final_a
а также final_b
в стеке, но затем ссылаясь на них как ui->final_a
а также ui->final_b
, Попробуйте удалить "ui->
" от тех.
В целом, я думаю, что ваш подход может быть упрощен. Например, допустим, у вас есть указатели на поля со списком, которые хранятся в массиве comboBoxes
, Тогда вы можете просто сделать это:
// create the combo boxes somewhere in your program, perhaps like this:
QComboBox *comboBoxes[8];
for (int i = 0; i < 8; ++i)
{
comboBoxes[i] = new QComboBox;
}
// Slot to check if there's two channels with the same option choosed
void gui::check_channels_options()
{
for (int a = 0; a < 8; ++a)
{
for (int b = 0; b < 8; ++b)
{
if (a == b ||
comboBoxes[a]->currentText() == "none" ||
comboBoxes[b]->currentText() == "none")
continue; // no need to test these for equality
else if (comboBoxes[a]->currentText() == comboBoxes[b]->currentText)
// issue warning
else
// they are OK
}
}
}
ui->final_a->currentText(), я не думаю, что вы можете получить доступ к элементу пользовательского интерфейса таким образом. в пользовательском интерфейсе нет элемента *final_a*, но, как я понял, будет какой-то элемент channel_1, channel2,
PS: пожалуйста, дайте переменным значимое имя,