如何将值从一个SLOT传递到另一个SLOT

时间:2012-08-13 11:51:09

标签: qt

这个问题绝对是一个新手问题所以我为此道歉。我有一个看起来像这样的SLOT。

 void MainWindow::on_actionSelect_for_hashing_triggered()
 {

 QFile file(QFileDialog::getOpenFileName (this, tr("Open File"),
                                         "",tr("")));

     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
         return;  
     QByteArray line = file.readAll();  
 }

现在我想将行传递给另一个看起来像这样的SLOT。

 void MainWindow::on_pushButton_clicked()
 {
  line2 = line;  // QByteArray line2 has been assigned globally
 qDebug()<<line2;
  }

所以在这里我只想打印line2,它将从第一个SLOT的行中获取值。 我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

void MainWindow::on_actionSelect_for_hashing_triggered()
{

    QFile file(QFileDialog::getOpenFileName (this, tr("Open File"), "",tr("")));

    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;  
    QByteArray line = file.readAll();  
    on_pushButton_clicked( line );
}

void MainWindow::on_pushButton_clicked( const QByteArray& line )
{
    line2 = line;  // QByteArray line2 has been assigned globally
    qDebug()<<line2;
}

只需调用该方法并传递字节数组即可。如果您需要on_pushButton_clicked(),那么只需重载或提供默认参数。

如果您希望能够在运行时连接/断开它们,则必须让on_actionSelect_for_hashing_triggered()发出on_pushButton_clicked(..)可以接收的内容。

我将发表关于不使用全局变量的通常演讲......