linux 信号如何传递两个参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 信号如何传递两个参数相关的知识,希望对你有一定的参考价值。
每次信号都只能带着第四个参数的数据传递过去,如果我是处理两个参数,(比如我要点击一个按钮,将两个文本框的数字相加,输入到第三个文本框),请问我如果将这两个数据传递过去,谢谢。
是C++么,我提供个想法,你把两个文本框的数据都定义成类的私有成员,然后定一个按钮的槽函数的时候,每次点击就读取两个文本框中的内容,然后相加后传给一个临时变量,将这个临时变量在第三个框中显示就行。你看看。或者定一个结构体,将两个参数合成一个结构体 参考技术A 自己做个编码,两个参数一起发过去,接收方再解码就行啦qt 两个界面 参数传递
mainwindow.h文件:
#include "dialog.h"
private:
Ui::MainWindow *ui;
Dialog dlg;
mainwindow.cpp文件:
void MainWindow::on_pushButton_clicked()
dlg.show();//dlg是做的一个数字键盘,这里可以实现把他调出来
//ui->lineEdit->setText(sss);
下面问题来了,我在dialog.cpp中
void Dialog::on_okbtn_clicked()
sss=s1;//这里我设了一个extern QString sss, 把最后在键盘上输入的值传给sss.
this.hide();//隐藏键盘
然后我需要在mainwindow的lineedit显示这个值,这里要怎么处理,怎么让这个值在我一把键盘隐藏掉之后就在mainwindow的lineedit里面显示出来,求大神
我那个程序值是传过去的,就是在mainwindow里面我点击一下按键,跳出键盘界面,在键盘界面点击OK返回到主界面,都正常,值也传过去了,就是存在sss这个全局变量中,那么在mainwindow里面现在sss这值怎么显示,如果我再搞个按键按下显示sss是可以的,但是我想在键盘隐藏的同时,在主界面的lineedit里面同时显示这个值
信号和槽
在dialog里写个信号 在mainwindow写个槽 连接就可以
还有可以写个接口
写个函数 返回你要的值 直接接受也可以啊追问
新手啊,求具体点,比如:
dialog.h
signals: void sendstr()
是这样写个信号?
那这个信号要怎么发出?难道在dialog.cpp中
void Dialog::on_okbtn_clicked()
sendstr();//发送信号?
this.hide();//隐藏键盘
这样发出信号?
void Dialog::sendstr()//信号函数就这样?
后面在评论里写
发送信号用emit...
void Dialog::on_okbtn_clicked()
emit sendstr();//发送信号 书里都有讲的吧...
this.hide();//隐藏键盘 //这里 this是指针 应该用->
void Dialog::on_okbtn_clicked()
this->hide();
emit sendstr(sss);
这个我查了网上知道了
但是maninwindow里面的connect怎么连接
connect(Dialog,SIGNAL(sendstr(QString)),this,SLOT(setlineedit()));这样不行啊
你有推荐书看看吗?
应该可以的 你的信号定义好象没有QString参数 书的话 Qt creator 快速入门 入门的书籍 介绍了一些Qt的功能 但是内容很浅显 纯粹是为了初学者写的 c++ gui Qt4 也不错的入门书籍 介绍的就相对较深
这两本看完之后 我还是感觉看看Qt自带的例子 就是最好的教程了 毕竟现在qt5 的书籍很少 Qt自带的例子很全面 哪里不会就看帮助文档
dialog.h 我定义的
signals:
void sendstr(QString);
然后mainwindow里面连接就是不行啊
dialog这个我是在mainwindow.h里定义的
private:
Ui::MainWindow *ui;
Dialog dlg; 然后dlg->show dlg->hide 都行的
不知道是不是这样的
按下OK
再按0 mainWindow 显示0 是这个意思吗?
是的,我主界面按了pushbutton弹出键盘,我在键盘按OK主界面就显示我输入的值
只是简单实现了一下你要求的信号和槽 可以去看一看
MianWindow下加入信号槽.
connect(dialog,SIGNAL(hide()),this,setTextLineEdit());追问
你这是想当然的吧,我就是这么搞的,不行,连不起来
追答你可以这样做。
在dialog里面自己加一个signal 方法声明。
然后在你按钮里emit一个自己的信号。
将MainWindow的处理函数和这个信号连接。
以上是关于linux 信号如何传递两个参数的主要内容,如果未能解决你的问题,请参考以下文章