PDA

View Full Version : [C++/Qt] File .ui e autogenerazione dei file .h


vendettaaaaa
28-01-2012, 15:36
Ciao,
stavo cominciando a smanettare un poco con Qt Creator e Qt Designer, e leggendo la documentazione ho seguito un esempio per creare una piccola finestra di dialogo con Qt Designer. Fin qui tutto bene, salvo il file come miowidget.ui. Questo file contiene codice XML.
Poi la documentazione parla di usare qmake per chiamare l'uic tool e convertire il contenuto dell'XML in 2 file: ui_miowidget.h e ui_miowidget.cpp, così da aggiungere codice all'occorrenza se si vogliono implementare funzioni proprie, non previste in Qt Designer.
Come faccio? La documentazione parla di eseguire qmake da console ma io uso Qt Creator, su Windows (e mi sembra che la documentazione assuma che si stia lavorando in Linux :rolleyes: ).

Smanettando un po' son riuscito a create un progetto di tipo Qt Widget desktop, che autogenera i file .ui, .h e .cpp chiamati allo stesso modo. Al che sostituisco il mio .ui e buildo, funziona, ma i file .h e .cpp non vengono modificati, cioè rimangono come da template e non ci trovo dentro i child widget che ho messo nel mio dialogo con Qt Designer (dovrei trovarci QPushButton, QLineEdit eccetera).

Sperando che qui qualcuno usi le Qt :D

kurt_85
28-01-2012, 18:03
non ho ben capito se è questo il tuo problema ma se hai installato il qt sdk, dovresti trovare anche sotto windows la console con le variabili di ambiente opportunamente settate..

marco.r
28-01-2012, 18:12
Ciao,
stavo cominciando a smanettare un poco con Qt Creator e Qt Designer, e leggendo la documentazione ho seguito un esempio per creare una piccola finestra di dialogo con Qt Designer. Fin qui tutto bene, salvo il file come miowidget.ui. Questo file contiene codice XML.
Poi la documentazione parla di usare qmake per chiamare l'uic tool e convertire il contenuto dell'XML in 2 file: ui_miowidget.h e ui_miowidget.cpp, così da aggiungere codice all'occorrenza se si vogliono implementare funzioni proprie, non previste in Qt Designer.
Come faccio? La documentazione parla di eseguire qmake da console ma io uso Qt Creator, su Windows (e mi sembra che la documentazione assuma che si stia lavorando in Linux :rolleyes: ).

Smanettando un po' son riuscito a create un progetto di tipo Qt Widget desktop, che autogenera i file .ui, .h e .cpp chiamati allo stesso modo. Al che sostituisco il mio .ui e buildo, funziona, ma i file .h e .cpp non vengono modificati, cioè rimangono come da template e non ci trovo dentro i child widget che ho messo nel mio dialogo con Qt Designer (dovrei trovarci QPushButton, QLineEdit eccetera).

Sperando che qui qualcuno usi le Qt :D
Se hai aggiunto il file .ui al progetto (te lo trovi sotto forms) la generazione dei file .h a partire dagli .ui dovrebbe avvenire automaticamente.
In caso prova a fare una pulizia del progetto e lanciare la compilazione.
Nella finestra di output della compilazione ( 4 | Compile Output ) dovresti trovare all'inizio una riga con qualcosa tipo

c:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\uic.exe ..\test\dialog.ui -o ui_dialog.h

vendettaaaaa
28-01-2012, 20:19
Ho provato da console:
sono andato con "cd percorsocartella" nella cartella contenente
1) il file .ui
2) il file main.cpp qui riportato:
#include <QApplication>
#include <QDialog>

#include "ui_gotocelldialog.h"

int main(int argc, char* argv[])
{
QApplication app(argc, argv);

Ui::gotocellDialog ui;
QDialog* dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();

return app.exec();
}
e ho dato i 2 comandi:
qmake -project
qmake GotoCellDialog.pro
ma ha generato solo
1) cartella debug vuota
2) cartella release vuota
3) 3 makefile
4) il file .pro

Nessuna traccia di headers :(

vendettaaaaa
30-01-2012, 17:00
Update: sono un po' un bigolo, ma anche Qt Creator ci mette del suo: l'header ui_gotocelldialog.h era nella cartella del debug, non viene creato nella stessa cartella del progetto e dei file source :eek: