Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]qt designer e eventi

    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.

  2. #2
    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


  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    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?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    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.

  5. #5
    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?
    I file .ui vanno compilati con l'utility messa a disposizione da qt, uic.
    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

    Codice PHP:
    #ifndef MYPB_H
    #define MYPB_H

    #include <QPushButton>
    #include <QDebug>
    #include <QMouseEvent>

    class MyPb : public QPushButton
    {
    public:
        
    MyPb(QWidgetparent 0);
        
    void mousePressEvent(QMouseEvente);
    };

    #endif // MYPB_H

    -------------------------------------

    #include "mypb.h"

    MyPb::MyPb(QWidgetparent) : QPushButton(parent)
    {
    }

    void MyPb::mousePressEvent(QMouseEvente)
    {
        
    QPushButton::mousePressEvent(e);

        
    qDebug() << e->button();

    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.

    Altrimenti puoi installare un filtro degli eventi
    Eventi e Filtri

    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.
    Purtroppo non uso l'addin per vs, mi spiace


  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    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();

  7. #7
    Non devi aggiungere alcuna libreria. Devi includere gli oggetti utilizzati, quindi nel tuo caso dovrebbe bastare #include <QDialog>


  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    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)

  9. #9
    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):

    codice:
    LIBS          = $(SUBLIBS)  -L/usr/lib -lQtGui -lQtCore -lpthread
    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)
    L'aggiunta di nuovi moduli, nella fase successiva a quella iniziale, va fatta modificando la variabile Qt nel file .pro:

    codice:
    QT += network sql
    Così aggiungi i moduli network e sql. Il successivo qmake (automatico, da QtCreator), genererà un Makefile con una riga simile a questo:

    codice:
    LIBS          = $(SUBLIBS)  -L/usr/lib -lQtSql -lQtGui -lQtNetwork -lQtCore -lpthread
    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 .pro

    codice:
    LIBS += -L/usr/local/lib -lsqlite3
    ad esempio.


  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    si , mi sono spiegato male, io uso il vs2008.
    Mi potresti anche dire cosa sono i file moc?
    Non riesco a generarli in vs

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.