找回密码
 立即注册
收起左侧
楼主: yafeilinux

第3篇 基础(三)Qt登录对话框

142
回复
148785
查看
  [复制链接]
累计签到:1564 天
连续签到:1 天
2014-7-5 22:32:23 显示全部楼层
aa88158859 发表于 2014-7-5 13:28
在主界面设置一个按钮名字为注销 按下返回到登录对话框   

void MainWindow:n_pushButton_clicked()

添加:
hide();
参与人数 1人气 +2 收起 理由
aa88158859 + 2

查看全部评分总评分 : 人气 +2

回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:1 天
2014-7-7 12:28:07 显示全部楼层
这样子第2次登录的时候 不会跳转到主界面而是直接退出了  为什么求解?
回复 支持 反对

使用道具 举报

累计签到:1564 天
连续签到:1 天
2014-7-7 22:53:13 显示全部楼层
aa88158859 发表于 2014-7-7 12:28
这样子第2次登录的时候 不会跳转到主界面而是直接退出了  为什么求解?

把函数改成下面这样试试。

void MainWindow:n_pushButton_clicked()
{
    LoginDialog *dlg=new LoginDialog(this);
    dlg->show();

hide();

connect(dlg,SIGNAL(accepted()),this,SLOT(show()));

}

因为第一次是在main()函数中进行了设置,点击登陆按钮可以调用主窗口的show();但是现在已经不在main()函数中了,点击登陆按钮,只会关闭登陆窗口,因为程序已经没有可视窗口了,所以就退出了。
回复 支持 反对

使用道具 举报

累计签到:13 天
连续签到:1 天
2014-7-20 15:32:46 显示全部楼层
zhanglin 发表于 2013-5-29 22:46
LoginDialog dlg;
    if (dlg.exec() == QDialog::Accepted)
C:\Qt\qtcreator-2.4.1\login-build-desktop ...

这个代码好像有点问题
回复 支持 反对

使用道具 举报

累计签到:13 天
连续签到:1 天
2014-7-20 15:33:25 显示全部楼层
yafeilinux 发表于 2013-5-30 19:26
看是否添加了改类的头文件;或者该类是否定义了。

改成loingdialog,应该就对啦
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2014-8-21 16:28:41 显示全部楼层
楼主,我想问为什么在ui界面中添加控件在对应的.cpp文件里看不到变化呢?按理说界面跟代码是一一对应的,QT里的对应机制是怎样的呢
回复 支持 反对

使用道具 举报

累计签到:1564 天
连续签到:1 天
2014-8-27 21:22:00 显示全部楼层
RichardDL 发表于 2014-8-21 16:28
楼主,我想问为什么在ui界面中添加控件在对应的.cpp文件里看不到变化呢?按理说界面跟代码是一一对应的,QT ...

ui对应的是一个ui_xxx.h文件,这个文件可以在项目源码目录中看到。

具体可以参考《Qt Creator快速入门》第2.3.2小节的内容。
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2014-9-10 19:29:32 显示全部楼层
太好了!准备每天早上对着这个做实验
回复 支持 反对

使用道具 举报

累计签到:8 天
连续签到:1 天
2014-10-27 15:55:25 显示全部楼层
慢慢学咯,还要补补C++才好
回复 支持 反对

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-8 22:42:39 显示全部楼层
楼主,那个“用户名:”和“密码:”是怎么添加上的
回复 支持 反对

使用道具 举报

累计签到:1564 天
连续签到:1 天
2014-12-10 22:41:32 显示全部楼层
caterpillar 发表于 2014-12-8 22:42
楼主,那个“用户名:”和“密码:”是怎么添加上的

添加Label标签部件,然后修改显示文本。
回复 支持 反对

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-11 09:35:13 显示全部楼层
yafeilinux 发表于 2014-12-10 22:41
添加Label标签部件,然后修改显示文本。

啊~这样子,谢谢楼主
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-12-11 13:29:29 显示全部楼层
为什么昨天我在win7的qt4上做没错,今天在ubuntu的qt5上面做就报错呢:'ui' was not declared in this scope       ?
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-12-11 13:59:25 显示全部楼层
ssd991300476 发表于 2014-12-11 13:29
为什么昨天我在win7的qt4上做没错,今天在ubuntu的qt5上面做就报错呢:'ui' was not declared in this scope  ...

弄好了,原来前面没有定义ui,我需要用this
回复 支持 反对

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-16 11:52:57 显示全部楼层
有代码真的是太好了。VS和QT Creator差别还是有些大
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-12-25 21:23:10 显示全部楼层
@yafeilinux 我怎样在这个基础上,在 Login界面上增加一个设置按钮,以此再弹一个Login的子窗口来优先设置一些参数,如连接数据库的服务器IP地址。
若在logindilalog 类中:
  1. #ifndef LOGINDIALOG_H
  2. #define LOGINDIALOG_H

  3. #include <QDialog>
  4. #include "settingdialog.h"
  5. namespace Ui {
  6. class LoginDialog;
  7. }

  8. class LoginDialog : public QDialog
  9. {
  10.     Q_OBJECT
  11.    
  12. public:
  13.     explicit LoginDialog(QWidget *parent = 0);
  14.     ~LoginDialog();
  15.    
  16. private slots:
  17.     void on_loginBtn_clicked();

  18.     void on_settingLinkButton_clicked();

  19. private:
  20.     Ui::LoginDialog *ui;
  21.     settingDialog settingForm; //就是这儿了
  22. };

  23. #####接着通过QSS 设置信号槽来显示###
  24. void LoginDialog::on_loginBtn_clicked()
  25. {

  26.     if(ui->usrLineEdit->text().trimmed() == tr("yafeilinux")
  27.             && ui->pwdLineEdit->text() == tr("123456"))
  28.     {
  29.         accept();
  30.     } else {
  31.         QMessageBox::warning(this, tr("Waring"),
  32.                              tr("user name or password error!"),
  33.                              QMessageBox::Yes);

  34.         ui->usrLineEdit->clear();
  35.         ui->pwdLineEdit->clear();
  36.         ui->usrLineEdit->setFocus();
  37.     }
  38. }

  39. void LoginDialog::on_settingLinkButton_clicked()
  40. {
  41.        settingForm.show(); ///就是这儿了

  42. }

  43. #endif // LOGINDIALOG_H
复制代码
接着怎样将SettingForm 设为锁定窗口优先处理呀?
回复 支持 反对

使用道具 举报

累计签到:1564 天
连续签到:1 天
2014-12-25 21:48:02 显示全部楼层
lace 发表于 2014-12-25 21:23
@yafeilinux 我怎样在这个基础上,在 Login界面上增加一个设置按钮,以此再弹一个Login的子窗口来优先设置 ...

什么是锁定窗口优先处理呢?

你这样写: settingForm.exec();

是不是这个效果。
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-12-25 21:56:59 显示全部楼层
yafeilinux 发表于 2014-12-25 21:48
什么是锁定窗口优先处理呢?

你这样写: settingForm.exec();

奇了,可以了。。就把settingForm.show()改为settingForm.exec();thanks.你的答复好快呀。。感谢就是这个效果了。。
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-3-7 18:47:19 显示全部楼层
451506709 发表于 2013-5-4 15:23
看了好多篇帖子,以前都是喜欢用Windows下的VS写的,看来要尝试下在QT下开发小小的Applicatio ...

为什么不用labview ,那个做波形图更简单更专业
回复 支持 反对

使用道具 举报

累计签到:11 天
连续签到:1 天
2015-4-21 21:54:00 显示全部楼层
用代码怎么设置setEchoMode??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了