社区
Qt
帖子详情
求教:QT编程中登录界面的设计
liyueyuxiang
2012-03-30 09:33:55
我在设计的程序中,要实现一个登录界面:
登录界面(基于QDialog类)------>>登录成功后,显示主窗口(基于QMianwindow)。同时呢,在dialog中查询到的用户信息要传递给mainwindow类,有点像QQ的登录界面。我不知到如何实现。
dialogwindow dialog;
mainwindow mainwin
if(dialog.exec())
{
mainwin.show;
}
这样做不知道行不行,又不知道如何传递参数。
...全文
1888
8
打赏
收藏
求教:QT编程中登录界面的设计
我在设计的程序中,要实现一个登录界面: 登录界面(基于QDialog类)------>>登录成功后,显示主窗口(基于QMianwindow)。同时呢,在dialog中查询到的用户信息要传递给mainwindow类,有点像QQ的登录界面。我不知到如何实现。 dialogwindow dialog; mainwindow mainwin if(dialog.exec()) { mainwin.show; } 这样做不知道行不行,又不知道如何传递参数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
羊坚强smile
2014-09-16
打赏
举报
回复
为什么我看不到有些图片
dengdeng1109
2012-05-09
打赏
举报
回复
http://download.csdn.net/detail/aaa20090987/3198961
这个是别人写的类似于QQ的聊天软件,你可以看下做个参考。。。
shaoxiaojing5193
2012-05-09
打赏
举报
回复
这很简单啊, 在dialog 中,当密码和用户名匹配成功后,new 一个mainwindow出来,把参数从构造函数当中传过去就行了啊 。。。
whx1352911
2012-05-05
打赏
举报
回复
比如QT中 自动生成的Main Window 点击一下菜单项File 然后下面就弹出NEW Open save saveas 等子项 不要代码的
要直接在qtdesigner中直接生成 找了半天 都找不到 怎么添加
[Quote=引用 2 楼 的回复:]
实现过程:
1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为Base class,这样便建立了主窗口。文件列表如下:
2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下:
3.在logindlg.ui……
[/Quote]
法尔我给他
2012-05-05
打赏
举报
回复
楼上的非常详细
pzyx262765175
2012-05-05
打赏
举报
回复
实现过程:
1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为Base class,这样便建立了主窗口。文件列表如下:
2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下:
3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。
4.将exitBtn的单击后效果设为退出程序,关联如下:
5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写入一句
void loginDlg::on_loginBtn_clicked()
{
accept();
}
6.改写main.cpp:
#include <QtGui/QApplication>
#include "widget.h"
#include "logindlg.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
loginDlg login;
if(login.exec()==QDialog::Accepted)
{
w.show();
return a.exec();
}
else return 0;
}
7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。
8.添加用户名密码判断功能。将登陆按钮的槽函数改为:
void loginDlg::on_loginBtn_clicked()
{
if(m_ui->usrLineEdit->text()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))
//判断用户名和密码是否正确
accept();
else{
QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);
//如果不正确,弹出警告对话框
}
}
并在logindlg.cpp中加入#include <QtGui>的头文件。如果不加这个头文件,QMessageBox类不可用。
(说明:由于版本原因,现在的程序默认生成的ui类对象可能是ui,而不是m_ui,请到loginDlg.h中查看。)
9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主窗口了,如果输入错了,就会弹出警告对话框。
如果输入错误,便会弹出警告提示框:
10.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示为小黑点。
loginDlg::loginDlg(QWidget *parent) :
QDialog(parent),
m_ui(new Ui::loginDlg)
{
m_ui->setupUi(this);
m_ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
}
效果如下:
11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序按错误的用户名对待了。
我们可以更改if判断语句,使这样的输入也算正确。
void loginDlg::on_loginBtn_clicked()
{
if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))
accept();
else{
QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);
}
}
加入的这个函数的作用就是移除字符串开头和结尾的空白字符。
12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽函数如下:
void loginDlg::on_loginBtn_clicked()
{
if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))
//判断用户名和密码是否正确
accept();
else{
QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);
//如果不正确,弹出警告对话框
m_ui->usrLineEdit->clear();//清空用户名输入框
m_ui->pwdLineEdit->clear();//清空密码输入框
m_ui->usrLineEdit->setFocus();//将光标转到用户名输入框
}
}
最终的loginDlg.cpp文件如下图:
pzhuyy
2012-03-30
打赏
举报
回复
你自己试一下就知道了,不复杂。
传值的话在Dialog的建二个成员变量
m_user,m_pass
MainWindow也同样二个public成员
直接MainWindow.m_user = Dialog.m_user即可。
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗?1/ 比网红函数VLOOKUP还全面的功能。——查(查询)2/ 取其精华,去其糟粕。——筛(筛选)3/ 拆分就像同学会,拆散一对是一对。——拆(拆分)4/ 天下大势,合久必分,分久必合。——合(合并)5/ 隔空取物,犹如探囊取物——提(提取)6/ 百转千回后的峰回路转。——转(转换)7/ 它判断真假的唯一标准。——判(判断)8/ 人以群分,物以类聚。——聚(聚合)9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
求教
:如何将这段VB代码如何转为
Qt
代码(
Qt
调用word自动生成目录)
求教
:这段VB代码如何转为
Qt
代码: Application.Templates( _ "C:\Users\lf0008\AppData\Roaming\Microsoft\Document Building Blocks\2052\16\Built-In Building Blocks.dotx" _ ).BuildingBlockEntries("自动目录 2").Insert Where...
求教
: 关于isin函数
求教
: 关于isin函数)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居
中
、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 i...
求教
:可组合的网络协议
设计
与实现
赖勇浩(http://laiyonghao.com)最近在折腾项目在腾讯开放平台的上线问题。其
中
有一点是网络协议的
设计
与实现。应用层协议很容易解决:我们使用 google protobuf 的 RPC。一开始,我们直接在 TCP 协议之上实现的,随着以下 3 个需求的出现,我的麻烦大了:1、服务器应用运行在腾讯云计算服务器时,需要接入 TGW(见 http://wiki.open.qq.com/w
求教
:内存数据存储程序
设计
【课程
设计
】联系邮箱:314090812@qq.com
题 目:内存数据存储程序
设计
初始条件: 具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言
编程
技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的
设计
使用方法。要求完成的主要任务:(包括课程
设计
工作量及其技术要求,以及说明书撰写等具体要求)1、用DEBUG在内存
中
设置好以Ctrl+Z结束的一串数据2、程序将上述数据存入磁盘文件
Qt
16,239
社区成员
26,650
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章