• 8000阅读
  • 9回复

QT怎么做登陆界面 [复制链接]

上一主题 下一主题
离线liulang
 
只看楼主 倒序阅读 楼主  发表于: 2010-01-18
  
   大侠们,小弟想给自己的qt界面加个类似于登陆界面的form,登陆完后,登陆界面应该消失,然后出现我做的主功能界面。请问要怎么实现啊,我的主界面都已经做好了
  急急急!!
离线20044454
只看该作者 1楼 发表于: 2010-01-18
验证成功后,你的登陆界面hide() 主界面show() 就可以了呀
让我做一个Qt的大牛!!!!
离线午小夜

只看该作者 2楼 发表于: 2010-01-18
点击登陆按钮后查询数据库核对帐户密码端口。。。然后看楼上。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线vtoanycall
只看该作者 3楼 发表于: 2010-01-18
简单做了个,可以参考一下
附件: login2.rar (825 K) 下载次数:134
离线vtoanycall
只看该作者 4楼 发表于: 2010-01-18
主要看看main函数的实现
离线liulang
只看该作者 5楼 发表于: 2010-01-19
引用第4楼vtoanycall于2010-01-18 21:44发表的  :
主要看看main函数的实现

  
大哥 不行啊
  你那程序编译通不过
离线liulang
只看该作者 6楼 发表于: 2010-01-19
引用第2楼午小夜于2010-01-18 21:13发表的  :
点击登陆按钮后查询数据库核对帐户密码端口。。。然后看楼上。


大侠 能帮我做一下吗
你简单做两个dialogue就行 ,我不太那样知道main() 中怎么写
离线jpchen609
只看该作者 7楼 发表于: 2010-01-19
顶一个,哈
我喜欢,我个性
离线午小夜

只看该作者 8楼 发表于: 2010-01-19
這是以前寫的一個類。。。
  1. #ifndef LOGINDLG_H
  2. #define LOGINDLG_H
  3. #include <QtGui>
  4. #include <QtCore>
  5. #include <QtSql>
  6. #include "controlpanel.h"
  7. #include "ce_communicator.h"
  8. #include "pa_database.h"
  9. extern QString g_username;
  10. class LoginDlg : public QDialog
  11. {
  12.     Q_OBJECT
  13. public:
  14.     LoginDlg(QWidget *parent = 0);
  15.     ~LoginDlg();
  16.     QString m_ip,m_password;
  17.     QString getIP(){return m_ip;}
  18.     QString getPassword(){return m_password;}
  19. private:
  20.     ce_Communicator *m_sender;
  21.     QLineEdit* m_le_ip;
  22.     QLineEdit* m_le_username;
  23.     QLineEdit* m_le_password;
  24.     QProgressBar* m_progress;
  25.     QTimer* m_timer;
  26.     QTimer* m_cTimer;//checktimer
  27.     bool m_flag;
  28.     int m_value;
  29.     bool m_bRight;
  30. private slots:
  31.     void cTimerSlot();
  32.     void timeoutSlot();
  33.     void accept();
  34.     void reject();
  35. private:
  36.     void paintEvent(QPaintEvent *event);
  37. };
  38. #endif // LOGINDLG_H


  1. #include "logindlg.h"
  2. QString g_username;
  3. LoginDlg::LoginDlg(QWidget *parent)
  4.     : QDialog(parent)
  5. {
  6.     QString path = QCoreApplication::applicationDirPath();
  7.     QDir::setCurrent(path);
  8. #ifdef Q_OS_WIN32
  9.     path.replace("/","\\");    
  10.     path.append("\\Nanya.exe");
  11.     QSettings *reg = new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
  12.     QSettings::NativeFormat);
  13.     reg->setValue("Nanya",QVariant(path));
  14.     delete reg;
  15. #endif
  16. #ifdef Q_OS_LINUX
  17.     //modify the configure file to make the executable file autorun when setup
  18. #endif
  19. //    this->setWindowFlags(Qt::WindowStaysOnTopHint |Qt::Dialog );
  20.     this->setStyleSheet("QLineEdit{border:2px solid gray;border-style:outset;border-radius:5px;}"
  21.                         "QLineEdit:focus{border:2px solid darkcyan;border-style:inset;}"
  22.                         "QPushButton{border:2 solid gray;border-style:inset;border-radius:5px;}"
  23.                         "QPushButton:pressed{border-style:outset;background-color:darkgreen;}"
  24.                         "QPushButton:focus{border:2px dashed darkcyan;}"
  25.                         "QProgressBar {border-radius: 5px;border: 1px solid grey;}"
  26.                         "QProgressBar:chunk {min-height:15px;border-radius: 3px;background-color: green;background: qlineargradient(x1: 0, y1: 0.5, x2: 1, y2: 0.5, stop: 0 red, stop: 1 white); }");
  27.     QHBoxLayout* lo_head = new QHBoxLayout;
  28.     QLabel* la_headimg = new QLabel(this);
  29.     la_headimg->setPixmap(QPixmap(":/images/nanya_log.png"));
  30.     la_headimg->setFixedSize(QPixmap(":/images/nanya_log.png").size());
  31.     QLabel* la_head = new QLabel(tr("Nanya University"),this);
  32.     la_head->setFont(QFont("Helvetica [Cronyx]",36,85));
  33.     la_head->setStyleSheet("color:Yellow;");
  34.     lo_head->addWidget(la_headimg);
  35.     lo_head->addWidget(la_head);
  36.     lo_head->setAlignment(Qt::AlignHCenter);
  37.     QLabel* la_subhead = new QLabel(tr("Intelligent Control System of Building Keding"),this);
  38.     la_subhead->setFont(QFont("Helvetica [Cronyx]",30,70));
  39.     la_subhead->setFixedWidth(420);
  40.     la_subhead->setStyleSheet("color:cyan;");
  41.     la_subhead->setAlignment(Qt::AlignHCenter);
  42.     QLabel* la_ip = new QLabel(tr("IP Address:"),this);
  43.     la_ip->setFont(QFont("Helvetica [Cronyx]",20,65));
  44.     m_le_ip = new QLineEdit("192.168.0.196",this);
  45.     m_le_ip->setFont(QFont("Helvetica [Cronyx]",20,65));
  46.     m_le_ip->setFixedSize(240,40);
  47.     QHBoxLayout* lo_ip = new QHBoxLayout;
  48.     lo_ip->addWidget(la_ip);
  49.     lo_ip->addWidget(m_le_ip);
  50.     lo_ip->setAlignment(Qt::AlignHCenter);
  51.     QLabel* la_username = new QLabel(tr("Username:"),this);
  52.     la_username->setFont(QFont("Helvetica [Cronyx]",20,65));
  53.     m_le_username = new QLineEdit(this);
  54.     m_le_username->setFont(QFont("Helvetica [Cronyx]",20,65));
  55.     m_le_username->setFixedSize(240,40);
  56.     m_le_username->setAlignment(Qt::AlignHCenter);
  57.     QHBoxLayout* lo_username = new QHBoxLayout;
  58.     lo_username->addWidget(la_username);
  59.     lo_username->addWidget(m_le_username);
  60.     lo_username->setAlignment(Qt::AlignHCenter);
  61.     QLabel* la_password = new QLabel(tr("Password:"),this);
  62.     la_password->setFont(QFont("Helvetica [Cronyx]",20,65));
  63.     m_le_password = new QLineEdit(this);
  64.     m_le_password->setFont(QFont("Helvetica [Cronyx]",20,65));
  65.     m_le_password->setFixedSize(240,40);
  66.     m_le_password->setEchoMode(QLineEdit::PasswordEchoOnEdit);
  67.     m_le_password->setAlignment(Qt::AlignHCenter);
  68.     QHBoxLayout* lo_password = new QHBoxLayout;
  69.     lo_password->addWidget(la_password);
  70.     lo_password->addWidget(m_le_password);
  71.     lo_password->setAlignment(Qt::AlignHCenter);
  72.     QHBoxLayout* lo_btn = new QHBoxLayout;
  73.     QPushButton* okBtn = new QPushButton(tr("OK"),this);
  74.     QPushButton* cancelBtn = new QPushButton(tr("Cancel"),this);
  75.     okBtn->setFocus();
  76.     okBtn->setFont(QFont("Helvetica [Cronyx]",20,65));
  77.     okBtn->setFixedSize(120,40);
  78.     cancelBtn->setFont(QFont("Helvetica [Cronyx]",20,65));
  79.     cancelBtn->setFixedSize(120,40);
  80.     connect(okBtn,SIGNAL(clicked()),this,SLOT(accept()));
  81.     connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject()));
  82.     m_progress = new QProgressBar(this);
  83.     m_progress->setFixedSize(140,15);
  84.     m_progress->setTextVisible(false);
  85.     m_progress->setRange(0, 100);
  86.     m_progress->setOrientation(Qt::Horizontal);
  87.     m_progress->setFormat("  %p");
  88.     m_progress->setVisible(false);
  89.     m_timer = new QTimer(this);
  90.     connect(m_timer,SIGNAL(timeout()),this,SLOT(timeoutSlot()));
  91.     m_cTimer = new QTimer(this);
  92.     connect(m_cTimer,SIGNAL(timeout()),this,SLOT(cTimerSlot()));
  93.     lo_btn->addSpacing(150);
  94.     lo_btn->addWidget(okBtn);
  95.     lo_btn->addSpacing(100);
  96.     lo_btn->addWidget(cancelBtn);
  97.     lo_btn->addWidget(m_progress);
  98.     lo_btn->setAlignment(Qt::AlignLeft);
  99.     QPushButton* boundary = new QPushButton(this);
  100.     boundary->setFixedSize(this->width(),22);
  101.     boundary->setStyleSheet("border:1px solid gray;margin:10px 0px 10px 0px;padding:0px;border-style:outset;");
  102.     boundary->setEnabled(false);
  103.     QVBoxLayout* l = new QVBoxLayout(this);
  104.     l->addLayout(lo_head);
  105.     l->addWidget(la_subhead,0,Qt::AlignHCenter);
  106.     l->addLayout(lo_ip);
  107.     l->addLayout(lo_username);
  108.     l->addLayout(lo_password);
  109.     l->addWidget(boundary);
  110.     l->addLayout(lo_btn);
  111.     setLayout(l);
  112.     m_sender = NULL;
  113. }
  114. LoginDlg::~LoginDlg()
  115. {
  116. }
  117. void LoginDlg::paintEvent(QPaintEvent *event)
  118. {
  119.     Q_UNUSED(event);
  120.     QPainter painter;
  121.     painter.begin(this);
  122.     painter.drawPixmap(QPoint(0,0),QPixmap(":/images/nanya.png"));
  123.     painter.end();
  124. }
  125. void LoginDlg::timeoutSlot()
  126. {
  127.     if(m_value <= 0 || m_value >= 100)
  128.     {
  129.         m_bRight = (!m_bRight);
  130.     }
  131.     if(m_bRight)
  132.     {
  133. //        m_progress->setInvertedAppearance(true);
  134.         m_value+=33;
  135.         m_progress->setValue(m_value);
  136.     }
  137.     else
  138.     {
  139. //        m_progress->setInvertedAppearance(false);
  140.         m_value-=33;
  141.         m_progress->setValue(m_value);
  142.     }
  143. }
  144. void LoginDlg::cTimerSlot()
  145. {
  146.     m_cTimer->stop();
  147.     if(m_sender != NULL)
  148.     {
  149.         m_sender->exit();
  150.         m_flag = true;
  151.         QMessageBox::critical(0,tr("Login Timeout"),tr("Failed to login on time."));
  152.         m_progress->setVisible(false);
  153.         qApp->quit();
  154.         m_sender->deleteInstance();
  155.         m_sender = NULL;
  156.     }
  157. }
  158. void LoginDlg::accept()
  159. {
  160.     m_progress->setVisible(true);
  161.     m_progress->setValue(1);
  162.     m_value = 1;
  163.     m_bRight = true;
  164.     m_flag = false;
  165.     m_timer->start(100);
  166.     qApp->processEvents();
  167.     m_ip = m_le_ip->text();
  168.     g_username = m_le_username->text();
  169.     m_password = m_le_password->text();
  170.     if(m_sender == NULL)
  171.     {
  172.         m_sender=::ce_Communicator::getInstance();
  173.     }
  174.     bool flag = true;
  175.     while(!m_sender->init(getIP()))
  176.     {
  177.         if(flag)
  178.         {
  179.             m_cTimer->start(10*1000);
  180.             flag = false;
  181.         }
  182.         qApp->processEvents();
  183.         if(m_flag)
  184.         {
  185.             break;
  186.         }
  187.     }
  188.     pa_database::init();
  189.     qApp->processEvents();
  190.     if(pa_database::m_inited)
  191.     {
  192.         m_le_ip->setEnabled(false);
  193.         bool check = false;
  194.         QSqlQuery query;
  195.         query.exec("select username,password from userinfo");
  196.         while(query.next())
  197.         {
  198.             if(query.value(0).toString()==g_username && query.value(1).toString()==getPassword())
  199.             {
  200.                 check = true;
  201.             }
  202.         }
  203.         if(check)
  204.         {
  205.             ControlPanel* panel = new ControlPanel;
  206.             panel->showFullScreen();
  207.             m_cTimer->stop();
  208.             return QDialog::accept();
  209.         }
  210.         else
  211.         {
  212.             m_progress->setVisible(false);
  213.             QMessageBox::critical(0,tr("Login Error"),tr("Username Or/And Password Error!"));
  214.         }
  215.     }
  216.     else
  217.     {
  218.         m_progress->setVisible(false);
  219.     }
  220. }
  221. void LoginDlg::reject()
  222. {
  223. //    if(m_sender != NULL)
  224. //    {
  225. //        m_sender->exit();
  226. //
  227. //        m_sender->deleteInstance();
  228. //        m_sender = NULL;
  229. //    }
  230.     qApp->quit();
  231. }
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线hehui

只看该作者 9楼 发表于: 2010-03-03
这个不难吧,跟普通的界面没什么区别
快速回复
限100 字节
 
上一个 下一个