|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
[Qt4] QtDesigner e custom slot
Tramite QtDesigner una volta collegato ad esempio l'evento click di un QPushButton ad uno slot custom, poi come lo implemento?
QtDesigner mette tutto il suo codice in un file header che ovviamente viene rigenerato ad ogni modifica dell'interfaccia, quindi è impossibile anche solo aggiungere la definizione dello slot. Ora quello che devo fare è gestire il click su un pulsante del QMainWindow per poi aprire un altro dialog, cosa semplicissima da fare via codice, ma a quanto pare ingestibile se si usa QtDesigner. Che devo per forza creare una classe che deriva da QPushButton che gestisce l'evento click? E così bisogna fare per ogni widget con eventi? Se è così a che serve il mezzo supporto dato dal designer agli slot custom? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma lo slot custom come l'hai creato ?
Edit: così ? http://www.youtube.com/watch?v=Ca8ItRtU0AA Ultima modifica di cionci : 03-12-2009 alle 19:42. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Ho provato ad associare un signal textChanged di un QLineEdit ad un mio slot che ho definito in una classe derivata da QTableView. Ho definito nell'editor che la QTableView ereditasse dalla mia classe e ho aggiunto nell'editor gli slot che ho definito via codice. Lo scopo era di applicare un filtro sui dati visualizzati in base al testo corrente. Solo che lo slot non viene richiamato. Questo è il codice della tabella: Codice:
class CustomTableView : public QTableView
{
public:
CustomTableView (QWidget * parent = 0) : QTableView(parent)
{
}
void setModel(QAbstractItemModel * model)
{
proxyModel = std::tr1::shared_ptr<QSortFilterProxyModel>(new QSortFilterProxyModel(this));
proxyModel->setSourceModel(model);
QTableView::setModel(proxyModel.get());
}
public slots:
void Filter(const QString & filter)
{
proxyModel->setFilterRegExp(QRegExp(filter));
proxyModel->setFilterKeyColumn(static_cast<ViewModels::AlbumViewModel*>(proxyModel->sourceModel())->GetAuthorColumn());
}
protected:
std::tr1::shared_ptr<QSortFilterProxyModel> proxyModel;
};
Codice:
QObject::connect(filter, SIGNAL(textChanged(QString)), tableView, SLOT(Filter(QString))); |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ehm non ho capito qual'è il problema
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Q_OBJECT
The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system. For example: Codice:
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Grazie! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:22.




















