ciao.
E' possibile assegnare gli evnti dei controlli qt dal designer?
io uso l'addin per vs2008 ma non riesco a farlo dal designer.
In particolare non so come utilizzare i file .ui dal codice c++(show getproprietà , check ecc....)
Grazie.
ciao.
E' possibile assegnare gli evnti dei controlli qt dal designer?
io uso l'addin per vs2008 ma non riesco a farlo dal designer.
In particolare non so come utilizzare i file .ui dal codice c++(show getproprietà , check ecc....)
Grazie.
No, dal designer puoi editare i collegamenti tra slot e signal.
Per gli eventi devi necessariamente derivare dalla classe che ti interessa o installare un filtro degli eventi
![]()
grazie
e come utilizzo i file .ui all interno di vs2008 ?
E Mi stavi parlando degli eventi , ma non ho capito , vanno creati da codice?
come?
scusa, ma se vado avanti a piccole domande sul forum non finisco piu e ti rompo, esiste della documentazione sulle qt in win e la loro integrazione in vs2008?
grazie.
I file .ui vanno compilati con l'utility messa a disposizione da qt, uic.Originariamente inviato da giuseppe500
grazie
e come utilizzo i file .ui all interno di vs2008 ?
E Mi stavi parlando degli eventi , ma non ho capito , vanno creati da codice?
come?
Non so se l'addin per vs ti permette di richiamarlo automaticamente. Se no, devi dare il comando da console per creare l'header dell'user interface.
Si, per intercettare un evento devi implementare i metodi relativi all'evento.
Ad esempio
Promuovendo un push button (nel designer dell'interfaccia lo puoi fare con tasto destro sul widget e poi cliccando su "promote to") ad un oggetto MyPb, quando esegui e quando clicchi, noti in console il codice del tasto del mouse premuto.Codice PHP:
#ifndef MYPB_H
#define MYPB_H
#include <QPushButton>
#include <QDebug>
#include <QMouseEvent>
class MyPb : public QPushButton
{
public:
MyPb(QWidget* parent = 0);
void mousePressEvent(QMouseEvent* e);
};
#endif // MYPB_H
-------------------------------------
#include "mypb.h"
MyPb::MyPb(QWidget* parent) : QPushButton(parent)
{
}
void MyPb::mousePressEvent(QMouseEvent* e)
{
QPushButton::mousePressEvent(e);
qDebug() << e->button();
}
Altrimenti puoi installare un filtro degli eventi
Eventi e Filtri
Purtroppo non uso l'addin per vs, mi spiacescusa, ma se vado avanti a piccole domande sul forum non finisco piu e ti rompo, esiste della documentazione sulle qt in win e la loro integrazione in vs2008?
grazie.
![]()
un ultima cosa , scusa ma che file .lib devo includere nel mio progetto per linkare il tutto?
come faccio a sapere quali .lib vanno incluse?
perchè ho incluso le directory e le librerie che mi richiedeva , ma questo codice:
codice:QApplication app(); QDialog *q = new QDialog();//errore!!!!!!!!!!!!!!!!!!!!!!!!!!! esce Ui_Dialog *dialog = new Ui_Dialog; dialog->setupUi(q); q->show();
Non devi aggiungere alcuna libreria. Devi includere gli oggetti utilizzati, quindi nel tuo caso dovrebbe bastare #include <QDialog>
![]()
ma se non includo alcuna lib mi da un sacco di errori del linker , che spariscono se aggiungo le librerie(i file .lib per intenderci)
Utilizzando il Qt Designer non ho mai avuto bisogno di aggiungere alcuna libreria quindi mi pare un pò strano. Oppure stai utilizzando VS?
Che librerie aggiungi (suppongo nel file .pro)?
edit: mi spiego meglio. Se utilizzi il Qt Creator, selezionando i moduli che ti servono dalla finestra che ti viene presentata (ad esempio spuntando il modulo QtSql), lui automaticamente crea il file .pro adatto. Successivamente, quando effettui il build dell'applicazione, lancia qmake per creare il Makefile, e automaticamente all'interno del Makefile troverai una riga simile a questa (al momento sono su Linux):
Per le classi che fanno parte del modulo QtGui, linkare la libreria QtGui ti basta per far compilare il progetto (oltre ad aggiungere i relativi header)codice:LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread
L'aggiunta di nuovi moduli, nella fase successiva a quella iniziale, va fatta modificando la variabile Qt nel file .pro:
Così aggiungi i moduli network e sql. Il successivo qmake (automatico, da QtCreator), genererà un Makefile con una riga simile a questo:codice:QT += network sql
Per questo ti dicevo che utilizzando il Creator non hai bisogno di esplicitare alcuna libreria, a meno che non usi qualche libreria esterna, cosa che va specificata utilizzando la variabile LIBS nel file .procodice:LIBS = $(SUBLIBS) -L/usr/lib -lQtSql -lQtGui -lQtNetwork -lQtCore -lpthread
ad esempio.codice:LIBS += -L/usr/local/lib -lsqlite3
![]()
si , mi sono spiegato male, io uso il vs2008.
Mi potresti anche dire cosa sono i file moc?
Non riesco a generarli in vs