1

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

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 被削减,在这种情况下输出很好,当我双击时,它显示“被双击”消息。

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

有人可以解释为什么!万分感谢,紧急!!!!!!!!!

4

1 回答 1

2

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

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

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

于 2013-03-08T10:19:12.767 回答