📄 connectionitems.h
字号:
/************************************************************************ Copyright (C) 2002 Trolltech AS. All rights reserved.**** This file is part of Qt Designer.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef CONNECTIONITEMS_H#define CONNECTIONITEMS_Hclass FormWindow;#include <qtable.h>class SenderItem;class ReceiverItem;class SignalItem;class SlotItem;class ConnectionContainer;class ConnectionItem : public QObject, public QComboTableItem{ Q_OBJECTpublic: ConnectionItem( QTable *table, FormWindow *fw ); void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ); void setSender( SenderItem *i ); void setReceiver( ReceiverItem *i ); void setSignal( SignalItem *i ); void setSlot( SlotItem *i ); void setConnection( ConnectionContainer *c );public slots: virtual void senderChanged( QObject *sender ); virtual void receiverChanged( QObject *receiver ); virtual void signalChanged( const QString &sig ); virtual void slotChanged( const QString &slot );signals: void changed();protected: FormWindow *formWindow;private: ConnectionContainer *conn;};// ------------------------------------------------------------------class SenderItem : public ConnectionItem{ Q_OBJECTpublic: SenderItem( QTable *table, FormWindow *fw ); QWidget *createEditor() const; void setSenderEx( QObject *sender );signals: void currentSenderChanged( QObject *sender );private slots: void senderChanged( const QString &sender );};// ------------------------------------------------------------------class ReceiverItem : public ConnectionItem{ Q_OBJECTpublic: ReceiverItem( QTable *table, FormWindow *fw ); QWidget *createEditor() const; void setReceiverEx( QObject *receiver );signals: void currentReceiverChanged( QObject *receiver );private slots: void receiverChanged( const QString &receiver );};// ------------------------------------------------------------------class SignalItem : public ConnectionItem{ Q_OBJECTpublic: SignalItem( QTable *table, FormWindow *fw ); void senderChanged( QObject *sender ); QWidget *createEditor() const;signals: void currentSignalChanged( const QString & );};// ------------------------------------------------------------------class SlotItem : public ConnectionItem{ Q_OBJECTpublic: SlotItem( QTable *table, FormWindow *fw ); void receiverChanged( QObject *receiver ); void signalChanged( const QString &signal ); QWidget *createEditor() const; void customSlotsChanged();signals: void currentSlotChanged( const QString & );private: void updateSlotList(); bool ignoreSlot( const char* slot ) const;private: QObject *lastReceiver; QString lastSignal;};// ------------------------------------------------------------------class ConnectionContainer : public QObject{ Q_OBJECTpublic: ConnectionContainer( QObject *parent, SenderItem *i1, SignalItem *i2, ReceiverItem *i3, SlotItem *i4, int r ) : QObject( parent ), mod( FALSE ), se( i1 ), si( i2 ), re( i3 ), sl( i4 ), rw ( r ) { i1->setConnection( this ); i2->setConnection( this ); i3->setConnection( this ); i4->setConnection( this ); connect( i1, SIGNAL( changed() ), this, SLOT( somethingChanged() ) ); connect( i2, SIGNAL( changed() ), this, SLOT( somethingChanged() ) ); connect( i3, SIGNAL( changed() ), this, SLOT( somethingChanged() ) ); connect( i4, SIGNAL( changed() ), this, SLOT( somethingChanged() ) ); } bool isModified() const { return mod; } void setModified( bool b ) { mod = b; repaint(); } bool isValid() const { return se->currentText()[0] != '<' && si->currentText()[0] != '<' && re->currentText()[0] != '<' && sl->currentText()[0] != '<'; } void repaint() { se->table()->updateCell( se->row(), se->col() ); si->table()->updateCell( si->row(), si->col() ); re->table()->updateCell( re->row(), re->col() ); sl->table()->updateCell( sl->row(), sl->col() ); } int row() const { return rw; } void setRow( int r ) { rw = r; } SenderItem *senderItem() const { return se; } SignalItem *signalItem() const { return si; } ReceiverItem *receiverItem() const { return re; } SlotItem *slotItem() const { return sl; }public slots: void somethingChanged() { mod = TRUE; emit changed( this ); }signals: void changed( ConnectionContainer *c );private: bool mod; SenderItem *se; SignalItem *si; ReceiverItem *re; SlotItem *sl; int rw;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -