2016-12-16 83 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