1

我的代码很简单:

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

4

2 回答 2

1

您应该阅读 Qt 文档中的一些教程。您将 QtDesigner ui 与手动小部件创建混合在一起。标签上的默认文本来自您的 ui 文件。此外,当您使用 ui 文件时,您不需要创建标签/行编辑。只需从 ui 类中得到它们即可。因此,如果您将 ui 文件恢复正常,那么您可以执行以下操作:

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 更改标签中的文本。

于 2012-09-07T14:55:47.327 回答
0

那是因为你的两个

 lineEdit = new QLineEdit();
 label = new QLabel("");

与您在 ui 中创建的不同。您正在定义两个新的小部件,而您可能应该参考以前的小部件:

 ui->lineEdit->clear();
 ui->label->clear();
 connect(ui->line....
 //etc...
于 2012-09-07T14:57:16.777 回答