25-对话框界面设计和类定义
6.5.2 对话框界面设计和类定义
采用新建Qt Designer Form Class的方法创建启动登录对话框,它从QDialog继承而来,设置类名称为QDlgLogin。界面设计在UI设计器里进行,主要区域是一个用于显示图片的QLabel组件,在资源文件里载入图片,为QLabel组件的pixmap指定图片。
对话框下方是用于用户名和密码输入的QLineEdit组件,两个按钮用于选择用户输入,设置“取消”按钮的clicked()信号与对话框的reject()槽函数关联。但是“确定”按钮的clicked()信号不要设置为与对话框的任何槽函数关联,需要对其编写自定义的槽函数代码,因为需要根据用户输入确定对话框返回结果。为对话框界面上的组件设置好布局。
下面是qdlglogin.h文件中QDlgLogin类的定义:
class QDlgLogin : public QDialog
{
Q_OBJECT
private:
bool m_moving=false;//表示窗口是否在鼠标操作下移动
QPoint m_lastPos; //上一次的鼠标位置
QString m_user="user"; //初始化用户名
QString m_pswd="12345";//初始化密码,未加密的
int m_tryCount=0; //试错次数
void readSettings(); //读取设置,注册表
void writeSettings();//写入设置,注册表
QString encrypt(const QString& str);//字符串加密
protected:
//用于鼠标拖动窗口的鼠标事件
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
public:
explicit QDlgLogin(QWidget *parent = 0);
~QDlgLogin();
private slots:
void on_btnOK_clicked();
private:
Ui::dlgLogin *ui;
};
在QDlgLogin类中,定义了一些私有成员变量。
- m_moving和m_lastPos用于在拖动窗口时记录移动状态和上次的位置,由于Splash窗口没有标题栏,所以采用在图片上拖拉的方式移动窗口,使用了3个鼠标事件来实现窗口拖动操作。
- m_user, m_pswd, m_tryCount用于记录用户名、密码和试错次数。
- readSettings()用于读取存储的设置,writeSettings()用于将设置存储,在Windows系统下,这些信息是存储在注册表里的。
- encrypt()函数用于对一个字符串进行加密。