在QLineEdit C ++ Qt Designer中显示文本

时间:2013-02-05 10:26:08

标签: c++ qt-designer qlineedit

我在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中定义

我该如何解决这个错误?

1 个答案:

答案 0 :(得分: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 ) ) );
}

请注意,您无法在类之间连接信号和插槽,只能在这些类的实例之间连接。

关于发出信号,请查看here。它可能是以下之一:(1)您没有使用Q_OBJECT宏或(2)您未正确声明信号(使用signals:)。如果是第一个,那么您必须再次运行qmake