【问题标题】:Qt QLabel default textQt QLabel 默认文本
【发布时间】:2012-09-07 14:19:26
【问题描述】:

我的代码很简单:

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

【问题讨论】:

  • 尝试在默认文本中添加一个空格。 QLabel(" ").
  • 我做到了,但它不起作用。
  • 为什么要一个不可见的标签?
  • 同意@jrok。为什么你想要一个不可见的标签?
  • 您确定您正在创建的 QLineEdit 和 QLabel 实际上是正在显示的吗?如果您使用 QtCreator GUI 创建对话框,则无需创建自己的 QLineEdit 和 QLabel,它们将位于“ui”对象内。

标签: c++ qt qlabel


【解决方案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 设计器通过双击更改标签中的文本。

【讨论】:

    【解决方案2】:

    那是因为你的

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

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

     ui->lineEdit->clear();
     ui->label->clear();
     connect(ui->line....
     //etc...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2018-05-24
      • 2021-10-20
      • 2017-03-03
      • 2018-06-06
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多