0

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

 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 的行接收值。我该怎么做?

4

1 回答 1

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(..)可以接收的东西。

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

于 2012-08-13T11:58:04.173 回答