如题
#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,完美解决问题