Показать текст в LineEdit C ++ Qt Designer

У меня есть два окна в Qt Designer, и я хочу открыть файл .txt с текстом. Этот код принадлежит второму окну (pacientes.ui)

pacientes.ui

и я хочу показать в первом окне (ventana.ui) три строки текста в трех LineEdit (файл .txt имеет три строки текста).

MainWindow

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

Как я могу исправить ошибку?

0

Решение

Вам следует позвонить

ui->nameEdit->setText(texto); //here it is the problem
ui->diagEdit->setText(names);
ui->dateEdit->setDate(fechas);

в первом окне (Вентана), но теперь вы называете это внутри 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 );
}

В Вентане вы делаете специальный слот, который выполняет всю работу:

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 снова.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]