Non riesco a vedere gli oggetti dichiarati nel form
-
Ciao ho creato un mainwindow.ui con
1 lineEdit
2 pushButton
3 labelHo 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();
}@
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
-
- inserisci se non l'hai fatto la seguente dichiarazione nel file mainwindow.h
@private slots:
void on_pushButton_clicked();@- 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();