C++ 无法从QLineEdit检索文本值
我正试图从一个简单的QLineEdit函数中检索文本值,但我无法使它工作,我是Qt新手,所以我有点迷路了,尤其是在使用指针时 在我的ui\u Ventas2.h文件中,Qt已经初始化了所有类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 *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&)));