Qt.如何处理双击事件

Qt. How to handle double click event

本文关键字:双击 事件 处理 何处理 Qt      更新时间:2023-10-16

无法处理双击事件。我尝试使用以下代码

来做到这一点
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected slots:
    void OnDc(const QModelIndex&);
private:
    Ui::MainWindow *ui;
};

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(this, SIGNAL(doubleClicked(const QModelIndex& )), this, SLOT(OnDc(const QModelIndex&)));
}
void MainWindow::OnDc(const QModelIndex&)
{
    ...
}
当双击发生时,OnDc不调用。我做错了什么?

你应该使用void QWidget::mouseDoubleClickEvent (QMouseEvent * event) [virtual protected]

您可以覆盖QMainWindow::mouseDoubleClickEvent

void MainWindow::mouseDoubleClickEvent( QMouseEvent * e )
{
    if ( e->button() == Qt::LeftButton )
    {
        ...
    }
    // You may have to call the parent's method for other cases
    QMainWindow::mouseDoubleClickEvent( e );
}