Qt登陆窗口,将登陆用户的信息显示到主界面中

该种方法是利用public成员来实现不同ui间的信息传递,可以将登陆用户的信息保存下来传递给其他界面。解决了我上一篇用信号和槽的方法不能解决的问题。


这里是利用公共函数的QString的GetName()和GetPwd()来获取用户名和密码将其传递,是可行的



我试验了下将登录的QString的名称和的QString pwd两个私有变量改为public共用变量便可直接肤质并不需要用到上述两个函数。


在主体中直接名称= l.name;

PWD = l.pwd;

l.name指明是登录这个类里的变量






源地址:HTTP://blog.csdn.net/chenzhoutong/article/details/6436653

数据库:sqlite3的

数据库名:学生

表名:学生

表的结构:


使用的工具是:SQLite数据库浏览器

 

注意:记得把创建的数据库文件student放到对应的目录(QT4.7是在login-build-desktop下)

 

新建工程登录

跳到UI界面,放置的QLabel和QViewTable两个组件

 


新建类的LoginDialog,继承自被QDialog


logindialog.h:

[CPP]   鉴于普通 副本
  1. #包括<被QDialog>  
  2. #包括<与QSqlTableModel>  
  3. 一流 的LoginDialog:  公众 被QDialog  
  4. {  
  5.     Q_OBJECT  
  6. 市民:  
  7.     明确 一个LoginDialog(QWidget的*父= 0);  
  8.     的QString的GetName();  
  9.     的QString GetPwd();  
  10. 信号:  
  11. 公共 插槽:  
  12.     空隙 login_clicked();  
  13. 私人:  
  14.     QLabel的* LABEL_NAME;  
  15.     QLabel的* label_Pwd;  
  16.     QLineEdit * LINE_NAME;  
  17.     QLineEdit * line_Pwd;  
  18.     QPushButton * btn_Login;  
  19.     QPushButton * btn_Cancle;  
  20.     QString的名称;  
  21.     QString的密码;  
  22. };  
  23. #ENDIF // LOGINDIALOG_H  

 

logindialog.cpp

[CPP]   鉴于普通 副本
  1. #包括“logindialog.h”  
  2. 一个LoginDialog ::一个LoginDialog(QWidget的*父):  
  3.     QDialog的(父)  
  4. {  
  5.     LABEL_NAME =   的QLabel(TR( “ 登录名” ));  
  6.     label_Pwd =   的QLabel(TR( “ 密码” ));  
  7.     LINE_NAME =   QLineEdit();  
  8.     line_Pwd =   QLineEdit();  
  9.     btn_Login =   QPushButton(TR( “ 确认” ));  
  10.     btn_Cancle =   QPushButton(TR( “ 取消” ));  
  11.   
  12.     line_Pwd-> setEchoMode(QLineEdit ::密码);  
  13.     label_Name-> setMaximumWidth(40);  
  14.     label_Pwd-> setMaximumWidth(40);  
  15.     line_Name-> setMaximumWidth(100);  
  16.     line_Pwd-> setMaximumWidth(100);  
  17.     QHBoxLayout * H1 =   QHBoxLayout();  
  18.     QHBoxLayout * H2 =   QHBoxLayout();  
  19.     QHBoxLayout * H3 =   QHBoxLayout();  
  20.     H1-> addWidget(LABEL_NAME);  
  21.     H1-> addWidget(LINE_NAME);  
  22.     H2-> addWidget(label_Pwd);  
  23.     H2-> addWidget(line_Pwd);  
  24.     H3 - > addWidget(btn_Login);  
  25.     H3 - > addWidget(btn_Cancle);  
  26.     QVBoxLayout * V =   QVBoxLayout();  
  27.     V-> addLayout(H1);  
  28.     v型> ​​addLayout(H2);  
  29.     V-> addLayout(H3);  
  30.     - > setLayout(V);  
  31.     - >调整大小(200,150);  
  32.     - > setMaximumSize(200,150);  
  33.     连接(btn_Cancle,信号(点击()),  这个,槽(接近()));  
  34.     连接(btn_Login,信号(点击()),  这个,槽(login_clicked()));  
  35. }  
  36. 无效 的LoginDialog :: login_clicked()  
  37. {  
  38.     名称= line_Name->文本();  
  39.     PWD = line_Pwd->文本();  
  40.     QSqlTableModel的模式;  
  41.     model.setTable( “ 学生” );  
  42.     model.setFilter(TR(“ID =”%1“和pwd ='%2'” ).arg(名称).arg(PWD));  
  43.     model.select();  
  44.     如果(model.rowCount()== 1)//查询到有一个结果  
  45.     {  
  46.         同意(); //隐含窗口,并返回结果QDialg ::接受  
  47.     } 其他  
  48.     {  
  49.         QMessageBox提示::警告(,TR( “ 警告” ),TR( “ 用户名或者密码不正确” ));  
  50.         line_Name->清除();  
  51.         line_Pwd->清除();  
  52.         line_Name->的setFocus();  
  53.     }  
  54. }  
  55. //返回登陆名  
  56. 的QString ::的LoginDialog的GetName()  
  57. {  
  58.     返回 名称;  
  59. }  
  60. //返回密码  
  61. QString的一个LoginDialog :: GetPwd()  
  62. {  
  63.     返回 PWD;  
  64. }  

 

widget.h:

[CPP]   鉴于普通 副本
  1. #ifndef WIDGET_H  
  2. #定义WIDGET_H  
  3. #包括<QWidget的>  
  4. #包括<与QSqlTableModel>  
  5. 命名空间 UI {  
  6.     一流的 窗口小部件;  
  7. }  
  8.  小工具:  公开 的QWidget  
  9. {  
  10.     Q_OBJECT  
  11. 市民:  
  12.     明确的 窗口小部件(即QString N,即QString磷,QWidget的*父= 0);  
  13.     〜小工具();  
  14. 私人:  
  15.     UI控件:: * UI;  
  16.     QString的名称;  
  17.     QString的密码;  
  18.     * QSqlTableModel的模型;  
  19. };  
  20. #ENDIF // WIDGET_H  


widget.cpp

[CPP]   鉴于普通 副本
  1. #包括“widget.h”  
  2. #包括“ui_widget.h”  
  3. 小工具::小工具(即QString N,即QString磷,QWidget的*父):  
  4.     QWidget的(父),  
  5.     UI( UI ::控件)  
  6. {  
  7.     UI-> setupUi();  
  8.     名称= N;  
  9.     PWD = P;  
  10.     模式=   QSqlTableModel的(这个);  
  11.     模型- >可设置(“学生” );  
  12.     模型- >使用setFilter(TR(“ID =”%1“” ).arg(名));  
  13.     模型 - >选择();  
  14.     UI-> label->的setText(TR( “%1,欢迎您您的信息如下:” ).arg(名));  
  15.     UI-> tableView->则setModel(模型);  
  16.     UI-> tableView-> resizeColumnsToContents();  
  17.     UI-> tableView-> setEditTriggers(QAbstractItemView :: NoEditTriggers);  
  18.   
  19. }  
  20.   
  21. 小工具::〜小工具()  
  22. {  
  23.     删除 的用户界面;  
  24. }  

 

main.cpp中

[CPP]   鉴于普通 副本
  1. #包括<QtGui /的QApplication>  
  2. #包括<QTextCodec>  
  3. #包括<QSqlDatabase>  
  4. #包括<QSqlError>  
  5. #包括“widget.h”  
  6. #包括“logindialog.h”  
  7. 静态 布尔 创建连接()  
  8. {  
  9.     QSqlDatabase DB = QSqlDatabase :: addDatabase(“QSQLITE” );  
  10.     db.setDatabaseName( “ 学生” );  
  11.     如果 (!db.open()){  
  12.         QMessageBox提示::关键(0,qApp-> TR( “ 无法打开数据库” ),  
  13.             qApp-> TR( “ 无法建立数据库连接。/ N”  
  14.                      “这个例子需要的SQLite支持,请仔细阅读”  
  15.                      “Qt的SQL驱动程序文档,以了解如何”  
  16.                      “来构建它。/ N / N”  
  17.                      “单击取消退出。” ),QMessageBox 提示::取消);  
  18.         返回 ;  
  19.     }  
  20.     返回 ;  
  21. }  
  22. INT  主要(INT  ARGC,  字符 *的argv [])  
  23. {  
  24.     的QApplication A(的argc,argv的);  
  25.     QTextCodec :: setCodecForTr(QTextCodec :: codecForName(“GB18030” ));  
  26.     如果(!创建连接())  
  27.     {  
  28.         返回 1;  
  29.     }  
  30.     一个LoginDialog升;  
  31.     QString的名称;  
  32.     QString的密;  
  33.     如果(l.exec()==被QDialog ::接受)  
  34.     {  
  35.         名称= l.GetName();  
  36.         PWD = l.GetPwd();  
  37.         窗口小部件W(姓名,PWD);  
  38.         w.show();  
  39.         返回 a.exec();  
  40.     } 其他  
  41.     {  
  42.         返回 0;  
  43.     }  
  44. }  

 


运行结果:


登陆界面:


正确:

 

错误:





下面是我用public成员做的一个例子:

不能上传附件,在资源类里

http://download.csdn.net/detail/kimherojae/8024259



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将系统计算机窗口界面嵌入到Qt界面,可以使用Qt的QWinWidget类。QWinWidget类是一个QWidget的子类,它允许将Windows窗口嵌入到Qt应用程序。 以下是一些简单步骤: 1. 在Qt Creator创建一个新的Qt Widgets应用程序项目。 2. 添加QWinWidget头文件:#include <QWinWidget> 3. 创建一个QWinWidget对象,并将其设置为窗口的子对象,例如: ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QWinWidget> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QWinWidget *winWidget = new QWinWidget(this); winWidget->setGeometry(50, 50, 400, 400); winWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::Window); winWidget->setAttribute(Qt::WA_TranslucentBackground); winWidget->setWindowTitle("System Window"); winWidget->show(); } MainWindow::~MainWindow() { delete ui; } ``` 4. 在setGeometry()函数设置QWinWidget的位置和大小。 5. 在setWindowFlags()函数设置窗口标志,这里使用了Qt::FramelessWindowHint标志来去掉窗口边框,和Qt::Window标志来设置窗口类型。 6. 在setAttribute()函数设置Qt::WA_TranslucentBackground属性,以便QWinWidget透明。 7. 在setWindowTitle()函数设置QWinWidget的标题。 8. 最后,调用show()函数以显示QWinWidget。 使用QWinWidget类可以将Windows窗口嵌入到Qt应用程序,并且可以使用Qt的布局管理器来调整窗口的大小和位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值