1.2 双击时不触发单击事件
为了避免双击时触发单击事件,在单击处理函数clicked()中启动一timer,延时qApp->doubleClickInterval(),而在此timer的timeout()中处理单击事件,在双击处理函数停止此timer,一个完整的例子代码如下:(for Qt3,Qt4的也差不多,省略)
class Test :public QListBox {
    Q_OBJECT
public:
    Test( QWidget* parent, const char* name = 0 )
        : QListBox( parent, name ) {
        connect( this, SIGNAL( clicked( QListBoxItem* ) ),
                 this, SLOT( seeingSingleClick() ) );
        connect( this, SIGNAL( doubleClicked( QListBoxItem* ) ),
                 this, SLOT( handleDoubleClick() ) );
        _timer = new QTimer( this );
        connect( _timer, SIGNAL( timeout() ),
                 this, SLOT( handleSingleClick() ) );
        insertStringList( QStringList() << "Item 1" << "Item 2"
                          << "Item 3" << "Item 4" );
    }
protected slots:
    void seeingSingleClick() {
        _timer->start( qApp->doubleClickInterval(), true );
    }
    void handleSingleClick() {
        qDebug("This was a single click!");
    }
    void handleDoubleClick() {
        qDebug("This was a double click!");
        _timer->stop();
    }
private:
    QTimer* _timer;
};
[ 此贴被XChinux在2006-06-15 11:56重新编辑 ]