当ui被设置时,qt :: mouseDoubleClickEvent不起作用

时间:2013-03-08 06:01:44

标签: qt mouseevent double-click

好的,所以代码很短,如下所示:

MainWindow::MainWindow() :
    QMainWindow(),
    ui(new Ui::MainWindow)
{
    //ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow:: mouseDoubleClickEvent ( QMouseEvent * event )
{
    cout << "being double clicked" << endl;
}

void MainWindow:: mousePressEvent(QMouseEvent *){
    cout << "being clicked once " << endl;
}

setupUi被削减,在这种情况下输出正常,当我双击时,它会显示“被双击”消息。

然而,!!!当我设置ui时,它停止工作!消息将不再显示... !!!

有人可以解释原因!非常感谢,这很紧急!!!!!!!!!

1 个答案:

答案 0 :(得分:2)

鼠标点击事件将始终发送到您单击的对象。这意味着如果您有例如一个按钮跨越整个主窗口,双击该按钮,将调用QPushButton::mouseDoubleClickEvent()而不是主窗口中的事件。

如果您不想在子窗口小部件的子类中实现这些功能,或者您的子窗口小部件不提供类似clicked()信号的内容,则可以使用事件过滤器技术:

http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#installEventFilter