Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Rphoenix от Февраль 22, 2020, 21:31



Название: Как работают сигналы в qt?
Отправлено: Rphoenix от Февраль 22, 2020, 21:31
Здравствуйте, я новичок в qt, поэтому прошу и помочь разобраться;

допустим, есть spinbox. Как сделать, чтобы через QMessageBox выводился текст - его нынешнее значение?

________________________

Вообще мне нужно сделать, чтобы вместо чисел можно было выбирать текст.


Название: Re: Как работают сигналы в qt?
Отправлено: Apktyc от Февраль 23, 2020, 00:29
Вообще мне нужно сделать, чтобы вместо чисел можно было выбирать текст.
А QComboBox чем не устраивает? Но на всякий случай существуют QSpinBox::textFromValue, QSpinBox::valueFromText


Название: Re: Как работают сигналы в qt?
Отправлено: kambala от Февраль 23, 2020, 00:40
Здравствуйте, я новичок в qt, поэтому прошу и помочь разобраться;

допустим, есть spinbox. Как сделать, чтобы через QMessageBox выводился текст - его нынешнее значение?

________________________

Вообще мне нужно сделать, чтобы вместо чисел можно было выбирать текст.
а где собственная попытка разобраться? выглядит как «сделайте всё за меня».


Название: Re: Как работают сигналы в qt?
Отправлено: Rphoenix от Февраль 23, 2020, 01:33
void MainWindow::on_spinBox_valueChanged(const QString &arg1)
{

    int i=1;
    QMessageBox::about(this, "текст", ui->spinBox->cleanText());
    QMessageBox::about(this, "текст", QString::number(i));
    if (i==1)  {(ui->spinBox->setSpecialValueText("ааа"));}
    else if (i==2) {(ui->spinBox->setSpecialValueText("ббб"));}
     ui->spinBox->setValue(0);
     if (i>2) {i=1;} else i++;

   //     ui->spinBox->setSpecialValueText("ююю");

}

вот так он выводит текст, только цикл начинается с начала.  Необходимо, чтобы он выводил заранее написанные три слова по кругу.
в данном примере при изменении


Название: Re: Как работают сигналы в qt?
Отправлено: Rphoenix от Февраль 23, 2020, 02:50
Вот так заработал перебор;

  b=ui->spinBox->cleanText();
    if (i>2) {i=0;};
    if (b=="ggg") {i=0;}
    else if (b=="aaa") {i=1;}
    else if (b=="bbb") {i=2;};



// QMessageBox::about(this, "текст", ui->spinBox->cleanText());
 // QMessageBox::about(this, "текст", QString::number(i));
     switch(i) {
       case 0:
         ui->spinBox->setSpecialValueText("aaa");  ui->spinBox->setValue(0);
         break;

       case 1:
         ui->spinBox->setSpecialValueText("bbb");  ui->spinBox->setValue(0);
         break;

       case 2:
         ui->spinBox->setSpecialValueText("ggg");  ui->spinBox->setValue(0);
         break;

     }