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

新建的子窗口中添加Edit,为什么在其他函数中链接不到?

8
回复
9084
查看
[复制链接]
累计签到:3 天
连续签到:1 天
来源: 2018-4-5 09:53:37 显示全部楼层 |阅读模式
3Qter豆
主窗口中通过一个按钮1新建一个子串口(widget),在子窗口中添加一个编辑框和一个按键2,通过点击按键2关闭子窗口并获取编辑框中的数据显示到主窗口中;但是为什么子窗口中的编辑框链接不到?求大神给解答一下;谢谢;
void MainWindow:n_SensorAiAddpushButton_clicked()  //按键1槽函数{    SensorAiAddMenu = new QWidget;//新建widget界面
    QLineEdit *chanalNumbEdit = new QLineEdit(SensorAiAddMenu);//    chanalNumbEdit->setText("1");    QPushButton* Determinebutton = new QPushButton("确定", SensorAiAddMenu);//新建按键}
void MainWindow::SensorAiAddDeterminebutton_clicked()//按键2槽函数{     SensorAiAddMenu->.....//这个找不到   chanalNumbEdit  为什么?     //SensorAiAddMenu->close();    SensorAiAddMenu->hide();//隐藏界面}
//.h文件private://私有的    Ui::MainWindow *ui;    QWidget *SensorAiAddMenu;


最佳答案

查看完整内容

你这个问题就比较大了,代码结构不是很合理,我就不多改了,然后办法是这样: on_SensorAiAddpushButton_clicked // 函数 QPushButton* Determinebutton = new QPushButton("确定", SensorAiAddMenu);//新建按键 connect(Determinebutton, SIGNAL(clicked()), this, SLOT(SensorAiAddDeterminebutton_clicked())); // 加上这个信号-槽 关联 SensorAiAddDeterminebutton_clicked // 函数 qDebug() children().at(4)) ...
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-4-5 09:53:38 显示全部楼层
本帖最后由 Since 于 2018-4-8 14:14 编辑

你这个问题就比较大了,代码结构不是很合理,我就不多改了,然后办法是这样:

on_SensorAiAddpushButton_clicked // 函数
    QPushButton* Determinebutton = new QPushButton("确定", SensorAiAddMenu);//新建按键

    connect(Determinebutton, SIGNAL(clicked()), this, SLOT(SensorAiAddDeterminebutton_clicked())); // 加上这个信号-槽 关联

SensorAiAddDeterminebutton_clicked // 函数

   qDebug() << ((QLineEdit*)SensorAiAddMenu->children().at(4))->text(); // 通过强制类型转换可以获取到控件的句柄





回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2018-4-5 09:54:18 显示全部楼层

void MainWindow:n_SensorAiAddpushButton_clicked()  //按键1槽函数
{
    SensorAiAddMenu = new QWidget;//新建widget界面

    QLineEdit *chanalNumbEdit = new QLineEdit(SensorAiAddMenu);//
    chanalNumbEdit->setText("1");
    QPushButton* Determinebutton = new QPushButton("确定", SensorAiAddMenu);//新建按键
}

void MainWindow::SensorAiAddDeterminebutton_clicked()//按键2槽函数

{
     SensorAiAddMenu->.....//这个找不到   chanalNumbEdit  为什么?
    //SensorAiAddMenu->close();
    SensorAiAddMenu->hide();//隐藏界面
}

//.h文件
private://私有的
    Ui::MainWindow *ui;
    QWidget *SensorAiAddMenu;

回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-4-8 09:00:36 显示全部楼层
chanalNumbEdit  这个是一个局部变量,n_SensorAiAddpushButton_clicked() 函数执行完你就找不到它了,要想在类的其他位置访问,你设置成类的成员变量吧~
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2018-4-8 09:31:01 显示全部楼层
Since 发表于 2018-4-8 09:00
chanalNumbEdit  这个是一个局部变量,n_SensorAiAddpushButton_clicked() 函数执行完你就找不到它了,要 ...

请问大神    除了这种方法还有其他简单方便的方法实现我说的这种功能吗?我是新手,刚开始学习,有些不懂的地方,请大神赐教!
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-4-8 09:44:51 显示全部楼层
SensorAiAddMenu  设置一个 getText() 的一个 public 函数,然后调用就可以了~
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2018-4-8 11:03:22 显示全部楼层
Since 发表于 2018-4-8 09:44
SensorAiAddMenu  设置一个 getText() 的一个 public 函数,然后调用就可以了~

不太懂。能帮我具体实现下么?不尽感激。。。
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-4-8 12:41:31 显示全部楼层
代码发到邮箱 874823787@qq.com
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2018-4-17 16:35:59 显示全部楼层
简单方法:
on_btn_clicked()
{
QDialog dlg;
    QHBoxLayout layout(&dlg);
    QLineEdit edit;
    QPushButton btn;
    connect(&btn,SIGNAL(clicked()),&dlg,SLOT(accept()));
    btn.setText("ok");
    layout.addWidget(edit,1);
    layout.addWidget(btn);
   
    if(dlg.exec() == QDialog::Accepted)
    {
        //你要的输入内容
        QString text = edit.text();
        //你要用到text的控件
        //ui->label->setText(text);
    }
}
回复

使用道具 举报

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

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