2016-12-16 77 views
0

我试着从一个简单QLineEdit功能检索文本()的价值,但我不能让它工作,我是新来的Qt,所以我有点失落,尤其是当使用指针。无法检索从QLineEdit的文本值

里面我ui_Ventas2.h文件,Qt的已经初始化所有的类

QLineEdit *lineClienteNo; 

但是当我要检索的文本我做这样的事,对我的main.cpp文件

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

我做一些非常基本的东西,但我不能链接它,这里是我的完整代码:

#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的链接,使其工作什么的?

注:我使用NetBeans 8.1和Qt框架5.7在Mac

+0

为什么你不新QLineEdit的? –

+0

对不起,不能得到的问题,我是全新的qt编程,如果这就是你要求的,编程图片在C是我用来编程 – lightshadown

回答

0

确定meabe theres在我的第一个问题上有个错误,即im试图访问的类来自Qt生成的名为ui_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; 

我使用的东西,就像你在您的文章有,它会找出我需要

QString text = Ui_Ventas2.lineClienteNo->text(); 

,我得到一个错误

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(); 
    } 
} 

然后,使用连接的Qt功能的加入一起

Ventas2::Ventas2() { 
    widget.setupUi(this); 

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

嗯,首先,ClienteNo是指向什么。即使它是指向QLineEdit的指针,ClienteNo->lineClienteNo.text();也不起作用,因为ClienteNo是指向QLineEdit的指针,该成员没有lineClienteNo成员,但即使具有该成员,也不会产生任何效果,因为您没有做任何事情有返回值。

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

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

听起来像是你需要熟悉多一点同时与编程语言和框架,尝试在实践中使用它们之前。

+0

对不起,如果问题听起来小白,只是学习c + +和Qt将是一个很好想法使用,将检查Ventas2.h类,当我离开工作,谢谢 – lightshadown