Qt 为LineEdit添加焦点设置为啥不起作用,放到开头构造函数里起作用了却阻止程序往

如题

#include "logindialog.h"
#include "ui_logindialog.h"

#include <QSqlTableModel>
#include <QMessageBox>
#include <QSqlQuery>

logindialog::logindialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::logindialog)
{
    ui->setupUi(this);

    setFixedSize(this->width(),this->height()); //禁止最大化显示
    ui->LoginpushButton->setFlat(true);  //设置按钮透明
    setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint);  //去掉登录框的问号
    createicon();

    QSqlQuery query;
    //query.setForwardOnly(true);
    query.exec(QObject::tr("select User_Id,User_Name from User"));
    while(query.next())
    {
        ui->ID_comboBox->addItem(query.value(0).toString());
        ui->Name_comboBox->addItem(query.value(1).toString());
    }

}



logindialog::~logindialog()
{
    delete ui;
}

/*************************登录条件的判断****************************/
void logindialog::on_LoginpushButton_clicked()
{

    if(ui->PwdlineEdit->text().isEmpty())
    {
        QMessageBox::information(this,tr("用户名和密码不能为空"),
                tr("请输入用户名和密码后再登录!\n\n"),
                QMessageBox::Yes);
    }
    else
    {
        QString User_Id = ui->ID_comboBox->itemText(ui->ID_comboBox->currentIndex());
        QString User_Name = ui->Name_comboBox->itemText(ui->Name_comboBox->currentIndex());
        QString User_Pwd = ui->PwdlineEdit->text();

        QSqlTableModel model;
        model.setTable("User");

        /*在用户数据表里进行检索查询,匹配用户名和密码是否相同*/
        model.setFilter(QObject::tr("User_Id = '%1' and User_Name = '%2' and User_Pwd = '%3'")
                        .arg(User_Id).arg(User_Name).arg(User_Pwd));
        model.select();

        if(model.rowCount() == 1)
        {
            accept();
        }

        else{
            QMessageBox::warning(this,tr("警告"),tr("用户名或者密码不匹配,\n请重新输入!"),
                                             QMessageBox::Yes);
            ui->PwdlineEdit->clear();
            ui->PwdlineEdit->setFocus(); //定位 一个输入焦点

        }

    }
}

void logindialog::createicon()
{
    QIcon icon = QIcon(":/images/program.png");
    setWindowIcon(icon);
    setWindowTitle("一二三四五");
}

void logindialog::on_ExitLoginpushButton_clicked()
{
    this->close();
}


换个思路,不在构造函数里设置焦点,而是在UI里设置窗口的Tab按键顺序,令LineEdit为第1顺位,能不能达到使其默认持有焦点的目的?
参考:
[QT] Tab键切换焦点顺序 在Qt Designer 中点击“编辑Tab顺序“按钮进入编辑Tab顺序模式,如下图: 之后界面会变成这样: 随处点击右键即可弹出菜单,选择 "制表符顺序列表..." 出现 剩下的 https://www.cnblogs.com/ourran/p/6540579.html

3Q,完美解决问题