Мой код очень прост:
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
lineEdit = new QLineEdit();
label = new QLabel("");
connect(lineEdit, SIGNAL(textChanged(QString)), label, SLOT(setText(QString)));
ui->setupUi(this);
}
Я его скомпилировал, и без ошибок или предупреждений.
Но когда я запускаю его, пользовательский интерфейс выглядит так:
Зачем QLabel
Текст по умолчанию был TextLabel
?
Вы должны прочитать некоторые учебники из документации Qt. Вы смешиваете QtDesigner с ручным созданием виджетов. Текст по умолчанию на этикетке взят из вашего пользовательского файла. Также вам не нужно создавать свои ярлыки / правки строк, когда вы используете пользовательский файл. Просто возьми их прямо из класса. Поэтому, если вы вернете свой пользовательский интерфейс в нормальное состояние, вы можете сделать что-то вроде этого:
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->lineEdit, SIGNAL(textChanged(QString)), ui->label, SLOT(setText(QString)));
}
Также измените текст в вашем ярлыке с помощью Qt Designer, дважды щелкнув по нему.
Это потому, что оба ваши
lineEdit = new QLineEdit();
label = new QLabel("");
отличаются от тех, которые вы создали в вашем пользовательском интерфейсе. Вы определяете два новых виджета, в то время как вы, вероятно, должны ссылаться на предыдущие:
ui->lineEdit->clear();
ui->label->clear();
connect(ui->line....
//etc...