QT Creator, как «привязаться» к позиции в порядке табуляции после события нажатия кнопки?

Я создаю форму, в которой пользователь отправляет свое собственное имя, имя пользователя и т. Д., Но имя пользователя должно быть уникальным, поэтому возникает ошибка QMessageBox, если выбранное имя пользователя уже используется.

Если этот lineEdit не является первым в порядке табуляции, как выполнить привязку к этому lineEdit после события щелчка?

{
    UserDB userconn;
    QString name,username,password,number,userid,userid2;
    name=ui->lineEdit_firstlastname->text();
    username=ui->lineEdit_username->text();
    password=ui->lineEdit_password->text();
    number=ui->lineEdit_phonenumber->text();
    userid="Admin";
    userid2="User";

    QByteArray prehash;
    prehash.append(password);
    QString hashword = QString(QCryptographicHash::hash(prehash,QCryptographicHash::Md5).toHex());

    QSqlQuery qry2;
    qry2.prepare("select * from user where username='"+username+"'");
    if(qry2.exec())
    {
        int count=0;
        while(qry2.next())\
        {
            count++;
        }
        if(count==1)
        {
            QMessageBox::critical(this,tr("Error!"),tr("Choose a different username!"));
            ui->lineEdit_username->setText("");
        }
        else....
        {
          /* 
             here, if the user submits a duplicate username, a 
             QMessageBox pops up telling the user to choose a 
             different username, and the focus returns to either the 
             pushButton or to the last lineEdit before the user 
             pressed Enter, and in this case, I'd like to return the 
             focus to that lineEdit that needs to be edited.
          */
        }
    }
}

qt
person Shane Garstig    schedule 23.08.2018    source источник
comment
Пожалуйста, покажите нам код, который вы написали. Это не Пожалуйста, напишите мою программу-страницу целиком.   -  person Lynx 242    schedule 23.08.2018
comment
Что вы имеете в виду под привязкой к?   -  person scopchanov    schedule 23.08.2018


Ответы (1)


Вам нужна функция Qt setFocus ().

Другой поток stackoverflow: Установить фокус QLineEdit в Qt дает разные ответы о том, как его использовать.

person Mariam    schedule 23.08.2018
comment
Есть много способов сделать это. Вы можете создать подкласс qlineedit и создать слот, который переключает цвет границы на красный, запускаемый при редактировании сигнала Finished или returnPressed или что-то еще, и проверять его по списку, или иметь триггер в родительском элементе, который устанавливает фокус на определенной строке редактировать на основе значения, когда страница готово. - person Mike; 24.08.2018
comment
Это не должно было быть комментарием к твоему ответу, ну да ладно - person Mike; 24.08.2018