Qt信号和插槽传递数据

鞭打

我刚来c++ and qt我不确定我是否使用正确的术语来描述我想要实现的目标。但是,它去了。

我的应用程序spawns and removes widgets in a gridlayout当用户pushes buttons成功地做到了这一点。但是,当用户使用生成的窗口小部件时,我需要widgets to interact with each other

QList<QLineEdit*> m_ptrLEPathList;
QList<QPushButton*> m_ptrPBList;

qint8 m_noFields;

void MainWindow::on_pbIncFields_clicked()
{
    //create widgets and place on a new row in a gridLayout
    QLineEdit *lineEditPath = new QLineEdit(this);
    QPushButton *pushButton = new QPushButton(this);

    //storing pointers in lists to be able to delete them later.
    m_ptrLEPathList.append(lineEditPath);
    m_ptrPBList.append(pushButton);

    ui->gridLayout->addWidget(m_ptrLEPathList.last(),m_noFields,0);
    ui->gridLayout->addWidget(m_ptrPBList.last(),m_noFields,1);

    connect(m_ptrPBList.last(), SIGNAL(clicked(bool), this, SLOT(on_addPath()));
    m_noFields++;
}

void MainWindow::on_pbDecFields()
{
    //delete last spawned widgets
}

void MainWindow::on_addPath()
{
    QFileDialog getPath();
    getPath.exec();

    //somehow set the text of the line edit spawned on the same row as the pushbutton

}

因此,当我按下任何生成的按钮时,我的插槽就会执行,但我不知道如何执行store the data from the file dialog in the related lineEdit

是我要做什么的基本想法,还是有其他解决方案可以实现我想要的功能?

k

on_addPath插槽中,您可以使用QObject::sender方法获得单击的按钮,并且假设m_ptrLEPathListm_ptrPBList列表相等,则可以轻松获得相应的内容QLineEdit

void MainWindow::on_addPath()
{
    QFileDialog dialog;
    if (!dialog.exec())
    {
        return;
    }

    QStringList fileNames = dialog.selectedFiles();
    if (fileNames.isEmpty())
    {
        return;
    }

    QPushButton *btn = qobject_cast<QPushButton*>(sender());
    if (!btn)
    {
        return;
    }

    Q_ASSERT(m_ptrPBList.size() == m_ptrLEPathList.size());

    int index = m_ptrPBList.indexOf(btn);
    if (index == -1)
    {
        return;
    }

    QLineEdit *edit = m_ptrLEPathList.at(index);
    edit->setText(fileNames.first());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt插槽和传递数据

来自分类Dev

Qt插槽和传递数据

来自分类Dev

信号和插槽 qt 关闭插槽

来自分类Dev

Qt信号和插槽:权限

来自分类Dev

Qt插槽和信号语法

来自分类Dev

Qt信号和插槽故障

来自分类Dev

Qt信号和插槽:如何获取已更改的数据?

来自分类Dev

QT5中的信号和插槽

来自分类Dev

Qt:连接文本中的信号和插槽

来自分类Dev

在QT中清除信号和插槽的命名

来自分类Dev

Qt-2类信号和插槽

来自分类Dev

Qt插槽和信号。获取插槽接收器对象

来自分类Dev

直接调用函数与发出信号(Qt-信号和插槽)

来自分类Dev

Qt插槽和信号未连接:无此信号

来自分类Dev

Qt信号/插槽问题

来自分类Dev

通过QT的信号/插槽系统传递通用异常作为参数

来自分类Dev

Qt 5.3信号和插槽,简单函数和Lambda表达

来自分类Dev

信号和插槽编辑按钮被禁用(Qt Designer 4.8)

来自分类Dev

如何在Qt中创建动态信号和插槽?

来自分类Dev

使用Qt信号和插槽与直接调用方法

来自分类Dev

第二类内的QT信号和插槽

来自分类Dev

如何更改QT中信号和插槽的时序?

来自分类Dev

Qt信号和插槽-没有匹配的通话功能

来自分类Dev

不同类别的QT信号和插槽

来自分类Dev

Qt 插槽和信号:MainWindow 中没有匹配函数

来自分类Dev

连接信号和插槽不起作用 Qt

来自分类Dev

通过引用信号和插槽传递抽象类参数

来自分类Dev

信号和插槽的工作

来自分类Dev

在插槽和组件vuejs之间传递数据