0

Qt Designerに2つのウィンドウがあり、テキストを含む.txtファイルを開きたい。このコードは2番目のウィンドウ(pacientes.ui)に属しています

pacientes.ui

最初のウィンドウ(ventana.ui)に3行のテキストを3行のLineEdit(ファイル.txtには3行のテキストが含まれています)で表示したいと思います。

メインウィンドウ

pacientes::pacientes(QWidget *parent)
: QDialog(parent),
ui(new Ui::pacientes)
{
ui->setupUi(this);
QDir path("C:/Users/Jaime/Desktop/interfaz/pacientes");
QStringList files = path.entryList(QDir::Files);

QComboBox comb;
qDebug()<<files;

ui->pacienteLista->addItems(files);
connect(this, SIGNAL( customSignalSetText(QString)), /*How I can put the variable?*/, SLOT(      customSlotSetText(QString)) ); 
}


pacientes::~pacientes()
{
   delete ui;
}

Venatana1とPacientesはQtDesignerで定義されています

どうすれば間違いを解決できますか?

4

1 に答える 1

0

あなたは電話するべきです

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もう一度実行する必要があります。

于 2013-02-05T11:01:02.300 に答える