Non riesco a vedere gli oggetti dichiarati nel form



  • Ciao ho creato un mainwindow.ui con
    1 lineEdit
    2 pushButton
    3 label

    Ho creato lo slot clicked con qtcreator

    il main.cpp è:
    @#include "mainwindow.h"
    #include <QApplication>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec&#40;&#41;;
    

    }@

    mentre mainwindow cpp

    @#include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));

    }

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

    void MainWindow::on_pushButton_clicked()
    {
    //if(ui->lineEdit->text().length() > 0 )
    //{
    ui->label->text() = ui->lineEdit->text();
    ui->lineEdit->text() = "Ciao!";
    //lbItems->insertItem( leItem->text() );
    //((leItem->clear();
    //}

    }@

    connect l'ho scritta manualmente non so come farla apparire direttamente con una funzione del qtcreator dalla vista del form. Se debug attivo entra in on_pushbuttonclicked() ma non riesco a capire come vedere e manipolare i valori degli oggetti.

    se provo a lasciare lineEdit->text() senza ui-> davanti non è presente nello scope, è come se dovessi ridichiarare gli oggetti all'interno della funzione, con ui. davanti li compila ma poi non mi funziona è come se fossero oggetti diversi.
    Mi sfugge un passaggio o + di uno, un aiuto è gradito :)

    ciao e grazie



    1. inserisci se non l'hai fatto la seguente dichiarazione nel file mainwindow.h

    @private slots:
    void on_pushButton_clicked();@

    1. cambia il codice del programma mainwindow.cpp nel seguente modo

    @#include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    }

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

    void MainWindow::on_pushButton_clicked()
    {
    ui->label->setText("Io sono una label");
    ui->lineEdit->setText("Io sono il contenuto dell TextEdit");

    }@

    per leggere il contenuto dell'oggetto lineEdit usa la funzione text() inq questo modo:

    @qDebug() << ui->lineEdit->text();@

    Ovviamente in questo caso il risultato non viene mostrato a video ma nella console di qt (in questo caso mon dimenticare di inserire #include <QDebug> nel file mainwindow.h .



  • Grazie della risposta e del consiglio della linea qDebug() << ui->lineEdit->text();


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.