C++ 无法从QLineEdit检索文本值

C++ 无法从QLineEdit检索文本值,c++,qt,netbeans,qlineedit,C++,Qt,Netbeans,Qlineedit,我正试图从一个简单的QLineEdit函数中检索文本值,但我无法使它工作,我是Qt新手,所以我有点迷路了,尤其是在使用指针时 在我的ui\u Ventas2.h文件中,Qt已经初始化了所有类 QLineEdit *lineClienteNo; 但是,当我想要检索文本时,我会在main.cpp文件上执行类似的操作 我正在做一些非常基本的事情,但我无法链接它,以下是我的完整代码: #include <QApplication> #include "Ventas2.h" #include

我正试图从一个简单的QLineEdit函数中检索文本值,但我无法使它工作,我是Qt新手,所以我有点迷路了,尤其是在使用指针时

在我的ui\u Ventas2.h文件中,Qt已经初始化了所有类

QLineEdit *lineClienteNo;
但是,当我想要检索文本时,我会在main.cpp文件上执行类似的操作

我正在做一些非常基本的事情,但我无法链接它,以下是我的完整代码:

#include <QApplication>
#include "Ventas2.h"
#include "ui_Ventas2.h"

int main(int argc, char *argv[]) {

QApplication app(argc, argv);
Ventas2 VentanaPrincipal;
VentanaPrincipal.show();

QLineEdit *ClienteNo;
ClienteNo->lineClienteNo.text();

return app.exec();
}
我是否应该在我的Ventas2.h头文件上创建一个新类来链接Qt中创建的类以使其正常工作

注意:我在Mac上使用的是Netbeans 8.1和Qt Framework 5.7,首先,ClienteNo是一个不指向任何东西的指针。即使是指向QLineEdit的指针,clientno->lineclientno.text;不起作用,因为ClienteNo是指向QLineEdit的指针,该QLineEdit没有lineClienteNo成员,但即使它有lineClienteNo成员,也没有任何效果,因为您没有对返回值执行任何操作

看起来您正在为小部件使用设计器生成的表单,因此为了从外部访问它,您需要将Ventas2.h中的ui指针设置为公共。然后你可以:

QString text = VentanaPrincipal.ui->lineClienteNo->text();
// do something with text

听起来,在你尝试在实践中使用编程语言和框架之前,你需要先熟悉一下它们。

好的,我的第一个问题有个错误,我尝试访问的类来自Qt生成的头文件ui\u Ventas.h,但是一般的头文件名为Ventas2.h,它有以下代码

#ifndef _VENTAS2_H
#define _VENTAS2_H

#include "ui_Ventas2.h"

class Ventas2 : public QMainWindow {
Q_OBJECT
   public:
     Ventas2();
     virtual ~Ventas2();
   private:
Ui::Ventas2 widget;
};

#endif /* _VENTAS2_H */
但是我试图从ui_Ventas2.h,QLineEdit类调用LineClienteNo获取文本

#ifndef UI_VENTAS2_H
#define UI_VENTAS2_H

....
#include <QtWidgets/QLineEdit>
....

class Ui_Ventas2
{
public:
   QLineEdit *lineClienteNo;
   QWidget *centralwidget;
   QPushButton *pushButtonOk;
   QLabel *label_Cliente;
   QWidget *widget;
我得到了下一个错误

main.cpp:26:20: error: 'Ui_Ventas2' does not refer to a value
   QString text = Ui_Ventas2.lineClienteNo->text();
               ^
./ui_Ventas2.h:30:7: note: declared here
    class Ui_Ventas2
我想我明白了,但是我不明白为什么如果我找到了我需要的课程,它会不断地给我错误,并且已经检查了有关它的教程

注意:我的错误是,我需要首先在Ventas2.h头文件中声明公共插槽

public slots:
  void textChanged(const QString& text);
然后在Ventas2.cpp.cc文件中声明函数

void Ventas2::textChanged(const QString& text) 
 {
if (0 < text.trimmed().length())
  { widget.lineEditMostrar->setText(text.trimmed());
  }
else {
   widget.lineEditMostrar->clear();
  }
}

为什么你不是新QLiNeDIT?抱歉,我不能接受这个问题,我对QT编程是全新的,如果你问这个问题,C编程PIC是我用来编程的问题,如果问题转到NoOB,只要学习C++和TQT是个好主意,我会在下班的时候检查VATAS2.H类,谢谢。
public slots:
  void textChanged(const QString& text);
void Ventas2::textChanged(const QString& text) 
 {
if (0 < text.trimmed().length())
  { widget.lineEditMostrar->setText(text.trimmed());
  }
else {
   widget.lineEditMostrar->clear();
  }
}
Ventas2::Ventas2() {
  widget.setupUi(this);

  connect(widget.lineClienteNo,SIGNAL(textChanged(const QString&)),this,SLOT(textChanged(const QString&)));