あなたは電話するべきです
ui->nameEdit->setText(texto); //here it is the problem
ui->diagEdit->setText(names);
ui->dateEdit->setDate(fechas);
最初のウィンドウ (ventana) にありましたが、今は pacientes 内で呼び出しています。したがって、ファイルへのパスを pacientes から ventana に送信し、ventana にテキストを設定する必要があります。
pacientes では、次のようなものが必要です。
void pacientes::on_pacienteAceptar_clicked()
{
QString pathToDirectory = "C://Users//Jaime//Desktop//interfaz//pacientes";
QString currentFileName = ui->pacienteLista->currentText();
QString pathToFile = QString("%1//%2").arg(pathToDirectory, currentFileName);
emit customSignalSetText( pathToFile );
}
ventana では、すべての作業を行うカスタム スロットを作成します。
void ventana::customSlotSetText( QString const & text )
{
if(!text.isEmpty())
{
QFile file(text);
...
}
}
また、pacientes と ventana があるアプリケーションでは、pacientes からのカスタム信号を ventana のカスタム スロットに接続します。
編集: このシグナルスロット接続は、pacientes のインスタンスと ventana のインスタンスにアクセスできる場所で発生する必要があります。
EDIT2:connect
内でも発生する必要がありますQObject
。
int main(...)
{
...
ventana1 w;
w.show();
pacientes pacientesObj(w);
...
}
のコンストラクタでpacientes
:
pacientes::pacientes( ventana1 receiver, QWidget* parent )
{
...
connect( this, SIGNAL( customSignalSetText( QString ) ), &receiver, SLOT( customSlotSetText( QString ) ) );
}
クラス間でシグナルとスロットを接続することはできず、これらのクラスのインスタンス間でのみ接続できることに注意してください。
信号の発信については、こちらをご覧ください。おそらく次のいずれかです: (1)Q_OBJECT
マクロを使用していないか、(2) シグナルを正しく宣言していません ( を使用signals:
)。最初の場合は、qmake
もう一度実行する必要があります。