感谢vahancho的想法,使用计时器。以下是我的解决方案:
YourClass.h类
private:
QListWidgetItem* mSingleClickedItem;
bool mDoubleClicked;
private slots:
void itemClickedTimeout();
YourClass.cpp
void YourClass::itemClicked(QListWidgetItem* listWidgetItem) {
if (!mDoubleClicked) {
QTimer::singleShot(300, this, SLOT(itemClickedTimeout()));
// use QApplication::doubleClickInterval() instead of 300
mSingleClickedItem = listWidgetItem;
}
}
void YourClass::itemClickedTimeout() {
if (!mDoubleClicked) {
// do something, listitem has been clicked once
} else mDoubleClicked = false;
}
void YourClass::itemDoubleClicked(QListWidgetItem* listWidgetItem) {
mDoubleClicked = true;
// do something, listitem has been clicked twice
}