Qt 双击时不触发单击事件

发布于 2022-09-01 03:55:42 字数 2848 浏览 17 评论 2

为了避免双击时触发单击事件,在单击处理函数clicked()中启动一timer,延时 qApp->doubleClickInterval(),而在此timer的timeout()中处理单击事件,在双击处理函数停止此 timer,一个完整的例子代码如下:(for Qt3,Qt4的也差不多,省略)

  1. #include <qapplication.h>
  2. #include <qtimer.h>
  3. #include <qlistbox.h>
  4. class Test :public QListBox {
  5.     Q_OBJECT
  6. public:
  7.     Test( QWidget* parent, const char* name = 0 )
  8.         : QListBox( parent, name ) {
  9.         connect( this, SIGNAL( clicked( QListBoxItem* ) ),
  10.                  this, SLOT( seeingSingleClick() ) );
  11.         connect( this, SIGNAL( doubleClicked( QListBoxItem* ) ),
  12.                  this, SLOT( handleDoubleClick() ) );
  13.         _timer = new QTimer( this );
  14.         connect( _timer, SIGNAL( timeout() ),
  15.                  this, SLOT( handleSingleClick() ) );
  16.         insertStringList( QStringList() << "Item 1" << "Item 2"
  17.                           << "Item 3" << "Item 4" );
  18.     }
  19. protected slots:
  20.     void seeingSingleClick() {
  21.         _timer->start( qApp->doubleClickInterval(), true );
  22.     }
  23.     void handleSingleClick() {
  24.         qDebug("This was a single click!");
  25.     }
  26.     void handleDoubleClick() {
  27.         qDebug("This was a double click!");
  28.         _timer->stop();
  29.     }
  30. private:
  31.     QTimer* _timer;
  32. };
  33. int main( int argc, char** argv ) {
  34.     QApplication app( argc, argv );
  35.     Test* test = new Test(0);
  36.     test->show();
  37.     QObject::connect( qApp, SIGNAL( lastWindowClosed() ),
  38.                       qApp, SLOT( quit() ) );
  39.     return app.exec();
  40. }
  41. #include "main.moc"

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌逼全场 2022-09-14 11:14:23

这样会影响单击事件吧 ...

渡你暖光 2022-09-13 23:07:17

GUI编程界面定制

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文