c++小学期大作业攻略(三)用户系统(未完成)

  感觉自己花了两天时间完成了一下午的工作量,基本上都是单纯地堆代码,没有什么技术性比较强的活。

  目前正在一步一步朝着GMA的样式前进。

  

  用户的存储是在全局的位置放了std::vector<User> g_Users,下面是遍历这个vector的一种比较优雅的做法:

  std::vector<User>::iterator itUserTemp;
  for (itUserTemp = g_Users.begin(); itUserTemp != g_Users.end(); itUserTemp++) {
    //itUserTemp->GetNickname()....   }

  

  

 1. Register

  

  这里的样式结构非常简单,画面整体是竖向排列的,里面再套一个横向排列用来放提示和输入框。文字输入用的是QLineEdit,下拉列表选项用的是QComboBox。

  按照我的写法,Register类中需要存储一下被输入的QLineEdit的指针,还有Register的父元素MainWindow的指针,响应的槽函数放在Register中,这样响应函数可以调用MainWindow的切换界面函数。

  以下为隐藏内容

QWidget* Register::ShowInformation(bool Show) {
    QWidget* pwBox = new QWidget();
    QVBoxLayout* pvLayout = new QVBoxLayout(pwBox);


    pvLayout->addWidget(CreateLineInput(STR_TIP_NICKNAME, m_pleNickname, Show));
    m_pleNickname->setMaxLength(20);

    pvLayout->addWidget(CreateLineInput(STR_TIP_PASSWORD, m_plePassword, Show));
    m_plePassword->setEchoMode(QLineEdit::Password);
    m_plePassword->setMaxLength(40);

    pvLayout->addWidget(CreateLineInput(STR_TIP_PASSWORDCON, m_plePasswordCon, Show));
    m_plePasswordCon->setEchoMode(QLineEdit::Password);
    m_plePasswordCon->setMaxLength(40);

    pvLayout->addWidget(CreateLineInput(STR_TIP_AGE, m_pleAge, Show));

    pvLayout->addWidget(CreateGenderInput(STR_TIP_AGE, m_pleGender, Show));

    return pwBox;
}
void Register::Init() {
    QVBoxLayout *pvlLayout = new QVBoxLayout(this);

    QLabel* plMainTitle = new QLabel(this);
    plMainTitle->setText(STR_MAINTITLE_REGISTER);
    plMainTitle->setAlignment(Qt::AlignCenter);
    pvlLayout->addWidget(plMainTitle, INT_SIZERATE_MAINTITAL);

    pvlLayout->addWidget(ShowInformation(), INT_SIZERATE_INFORMATION);




    QWidget* pwButton = new QWidget(this);
    QHBoxLayout* phlButton = new QHBoxLayout(pwButton);
    QPushButton* ppbRegister = new QPushButton(pwButton);
    ppbRegister->setText(STR_BUTTON_REGISTER);
    phlButton->addWidget(ppbRegister, INT_SIZERATE_BUTTON_REGISTER);


    pvlLayout->addWidget(pwButton, INT_SIZERATE_BUTTON);



    connect(ppbRegister, SIGNAL(clicked(bool)), this, SLOT(RegisterRequest()));
}
View Code

2. Login

  

  和Register非常相似,用一个User* g_pCurrentUser来指向当前的已登录用户。

 

3. Database

  我们需要在程序开启时从数据库加载表里的用户,程序关闭时把相关数据存入数据库。

  我专门写了一个Database类,初始化时传入地址、账号、密码之类的初始信息,当然为了方便你也可以把数据库写成全局的函数,初始信息写死。

  每次存数据先把数据库里的表清空:TRUNCATE Users,然后再逐个用户INSERT INTO Users。取数据直接SELETE即可。

 

4. Leaderboard

  

  反正只是一个大作业而已,就不打算做什么翻页地功能了,直接一个滚动条滑到底好了。

  首先是一个竖直的布局,有一个MainTitle(QLabel)和一个Leaderboard(QScrollArea)。QScrollArea里面先套了一个QWidget,在这个QWidget里面放竖直布局,竖直布局里面每行是一个水平布局,存放个人信息。值得注意的是QScrollArea需要执行一下setWidgetResizable(true),否则会有显示错误……

  

猜你喜欢

转载自www.cnblogs.com/Enceladus/p/11223592.html