这个问题绝对是一个新手问题所以我为此道歉。我有一个看起来像这样的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的行中获取值。 我怎么能这样做?
答案 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(..)
可以接收的内容。
我将发表关于不使用全局变量的通常演讲......