好的,所以代码很短,如下所示:
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时,它停止工作!消息将不再显示... !!!
有人可以解释原因!非常感谢,这很紧急!!!!!!!!!
答案 0 :(得分:2)
鼠标点击事件将始终发送到您单击的对象。这意味着如果您有例如一个按钮跨越整个主窗口,双击该按钮,将调用QPushButton::mouseDoubleClickEvent()
而不是主窗口中的事件。
如果您不想在子窗口小部件的子类中实现这些功能,或者您的子窗口小部件不提供类似clicked()
信号的内容,则可以使用事件过滤器技术:
http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#installEventFilter