找回密码
 立即注册
收起左侧

QT信号与槽的问题

12
回复
8571
查看
[复制链接]
累计签到:25 天
连续签到:1 天
来源: 2016-4-26 10:18:09 显示全部楼层 |阅读模式
1Qter豆
当按下子界面“返回”按钮时关闭子界面,然后显示主界面,能不能通过信号槽解决?
就是不读取控件的数值,直接关闭子界面,然后显示主界面
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

不太明白你的意思。 给你个例子看下。 2个界面,通过按下按钮发送信号切换界面。 main.cpp Widget和Form都是界面类。widget.cpp 构造函数槽函数和按钮槽函数form.cpp
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-26 10:18:10 显示全部楼层
不太明白你的意思。
给你个例子看下。
2个界面,通过按下按钮发送信号切换界面。
main.cpp
Widget和Form都是界面类。
  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     Widget w;
  5.     w.setVisible(true);
  6.     Form f;
  7.     f.setVisible(false);
  8.     QObject::connect(&w,SIGNAL(send_show_f()),&f,SLOT(show_f()));
  9.     QObject::connect(&f,SIGNAL(send_show_w()),&w,SLOT(show_w()));
  10.     return a.exec();
  11. }
复制代码
widget.cpp
构造函数
  1. Widget::Widget(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::Widget)
  4. {
  5.     ui->setupUi(this);
  6.     connect(ui->pushButton,SIGNAL(clicked()),this,SIGNAL(send_show_f()));
  7. }
复制代码
槽函数和按钮槽函数
  1. void Widget::on_pushButton_clicked()//按钮按下
  2. {
  3.     this->setVisible(false);
  4. }

  5. void Widget::show_w()//接收到信号,执行槽函数显示界面
  6. {
  7.     this->setVisible(true);
  8. }
复制代码
form.cpp
  1. Form::Form(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::Form)
  4. {
  5.     ui->setupUi(this);
  6.     connect(ui->pushButton,SIGNAL(clicked()),this,SIGNAL(send_show_w()));
  7. }

  8. Form::~Form()
  9. {
  10.     delete ui;
  11. }

  12. Form::show_f()
  13. {
  14.     this->setVisible(true);
  15. }

  16. void Form::on_pushButton_clicked()
  17. {
  18.     this->setVisible(false);
  19. }
复制代码
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-26 14:44:57 显示全部楼层
可以,子界面先定义一个信号。
子界面构造函数connect(按钮按下信号,发送定义的信号)
主函数main.cpp里面,QObject:connect(发送定义的信号,主界面的槽函数)
然后你在主界面的槽函数里面干你想干的吧
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-26 15:06:22 显示全部楼层
神奇号 发表于 2016-4-26 14:44
可以,子界面先定义一个信号。
子界面构造函数connect(按钮按下信号,发送定义的信号)
主函数main.cpp里 ...

我现在可以实现当按下子界面“返回”按钮时关闭子界面,然后显示主界面的功能了,但是运行程序直接就触发,我想通过点击按钮再触发,可以吗?
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-27 14:42:15 显示全部楼层
神奇号 发表于 2016-4-27 11:07
不太明白你的意思。
给你个例子看下。
2个界面,通过按下按钮发送信号切换界面。

发射信号不用通过emit吗
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-27 19:23:53 显示全部楼层
自己测试吧,印象会深刻。
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-28 08:50:33 显示全部楼层
神奇号 发表于 2016-4-27 19:23
自己测试吧,印象会深刻。

用你给我的例子测试了下,好多error啊
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-28 09:05:57 显示全部楼层
机长 发表于 2016-4-28 08:50
用你给我的例子测试了下,好多error啊

不会把,我等下把工程给你。
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-28 09:17:11 显示全部楼层
界面切换,按按钮。。。。。
只能小于1M
回复

使用道具 举报

累计签到:234 天
连续签到:1 天
2016-4-28 09:18:30 显示全部楼层
界面切换,按按钮。。。。。
只能小于1M

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-28 10:09:18 显示全部楼层
神奇号 发表于 2016-4-28 09:18

你好,为什么我运行程序出现这些错误啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-28 10:12:50 显示全部楼层
神奇号 发表于 2016-4-28 09:18

你好,我运行程序后出现这些错误啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-4-28 10:34:51 显示全部楼层
神奇号 发表于 2016-4-28 09:18

检查之后可以了,谢谢
回复

使用道具 举报

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

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