首先我新建了一个空工程,然后添加login.h头文件:
#ifndef LOGIN_H
#define LOGIN_H
#include<QtGui/QDialog>
class QLineEdit;
class SLoginDlg : public QDialog
{
Q_OBJECT
public:
SLoginDlg(QWidget *parent = 0);
virtual ~SLoginDlg();
public slots:
virtual void accept();
private:
QLineEdit *userLineEdit;
QLineEdit *pwdLineEdit;
};
#endif // LOGIN_H
再者添加login.cpp源文件:
#include"login.h"
#include<QtGui/QtGui>
SLoginDlg::SLoginDlg(QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("登录"));
QLabel *userLabel = new QLabel(tr("用户名"));
QLabel *pwdLabel = new QLabel(tr("密码"));
userLineEdit = new QLineEdit;
pwdLineEdit = new QLineEdit;
pwdLineEdit->setEchoMode(QLineEdit::Password);
userLineEdit->setPlaceholderText(tr("条码号/学号"));
pwdLineEdit->setPlaceholderText(tr("请输入密码"));
QGridLayout *gridLayout = new QGridLayout;
gridLayout->addWidget(userLabel,0,0,1,1);
gridLayout->addWidget(userLineEdit,0,1,1,3);
gridLayout->addWidget(pwdLabel,1,0,1,1);
gridLayout->addWidget(pwdLineEdit,1,1,1,3);
QPushButton *okButton = new QPushButton(tr("登录"));
QPushButton *cancelButton = new QPushButton(tr("取消"));
QHBoxLayout *btnLayout = new QHBoxLayout;
btnLayout->setSpacing(60);
btnLayout->addWidget(okButton);
btnLayout->addWidget(cancelButton);
QVBoxLayout *faceLayout = new QVBoxLayout;
faceLayout->setMargin(40);
faceLayout->addLayout(gridLayout);
faceLayout->setMargin(40);
faceLayout->addLayout(btnLayout);
setLayout(faceLayout);
connect(okButton,SIGNAL(clicked()),this,SLOT(accept()));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(reject()));
resize(300,200);
}
SLoginDlg::~SLoginDlg()
{
delete userLineEdit;
delete pwdLineEdit;
}
void SLoginDlg::accept()
{
if(userLineEdit->text().trimmed()==tr("Hughen")&&
pwdLineEdit->text()==tr("123456")) //trimmed()是过滤其中的非法字符
{
QDialog::accept();
}
else
{
QMessageBox::warning(this,tr("错误"),tr("用户名或密码错误,请检查大小写是否规范"),QMessageBox::Yes);
userLineEdit->clear();
pwdLineEdit->clear();
userLineEdit->setFocus();
}
}
最后添加main.cpp源文件:
#include"login.h"
#include<QtGui/QtGui>
#include<QTextCodec>
int main(int argc,char *argv[])
{
QApplication appLogin(argc,argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("Hughen"));
SLoginDlg *SLog = new SLoginDlg;
SLog->show();
return appLogin.exec();
}
所有代码书写完成,然后在Qt for Desktop MSVC2010的构建环境下,编译链接,问题出现
程序异常终止,直接退出
到这里我就不明白了,求一个大神给点提示,我这代码究竟错在哪里?????