【问题标题】:text label is not a member of 'Ui::Dialog' Qt文本标签不是“Ui::Dialog”Qt 的成员
【发布时间】:2013-06-05 18:58:23
【问题描述】:

我正在尝试在我的 openCV 代码中的标签中放置图像。 opencv 部分运行顺畅。然而,显示 Qimage 被证明是一个问题。我将图像放在标签中。

ui->lblOriginal->setPixmap(QPixmap::fromImage(qimgOriginal));

但是,它告诉我“错误:C2039: 'lblOriginal' : is not a member of 'Ui::Dialog'”

lblOriginal 是我对话框中的一个标签。有什么我想念的吗?这是dialog.cpp中的全部代码:

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    capWebcam.open(0);

    tmrTimer = new QTimer(this);
    connect(tmrTimer, SIGNAL(timeout()), this, SLOT(processAndUpdateGUI()));
    tmrTimer->start(20);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::processAndUpdateGUI(){
    capWebcam >> matOriginal;

    if(matOriginal.empty() == true)return;

    cv::cvtColor(matOriginal,matOriginal, CV_BGR2RGB);

    QImage qimgOriginal((uchar*)matOriginal.data, matOriginal.cols, matOriginal.rows,matOriginal.step,QImage::Format_RGB888);

    ui->lblOriginal->setPixmap(QPixmap::fromImage(qimgOriginal));

}

下面是我们的xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
  <rect>
    <x>0</x>
    <y>0</y>
    <width>1181</width>
    <height>590</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QLabel" name="lblOrignal">
   <property name="geometry">
    <rect>
     <x>80</x>
     <y>36</y>
     <width>640</width>
     <height>480</height>
    </rect>
    </property>
   <property name="autoFillBackground">
    <bool>true</bool>
   </property>
   <property name="text">
    <string>TextLabel</string>
  </property>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

【问题讨论】:

  • 你能发布你的 xml ui 文件吗?
  • 我将其添加到问题中

标签: image qt dialog label


【解决方案1】:

实际上,您犯了一个基本错误,在您的 UI 文件中:

<widget class="QLabel" name="lblOrignal">

您尝试引用为:

ui->lblOriginal->setPixmap(QPixmap::fromImage(qimgOriginal));

那么你检查过差异吗?如果不是,lblOrignal 不等于 lblOriginal。

【讨论】:

  • 错别字!!!!非常感谢您注意到这一点。我现在因为自己没有注意到它而感到很傻。
  • 如果编译器说它不存在,那就意味着它不存在;)。如果它解决了您的问题@user2442449,请检查答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2014-10-21
  • 1970-01-01
  • 2014-08-26
  • 2018-04-19
相关资源
最近更新 更多