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;
}

この場合、出力は問題ありません。ダブルクリックすると、「being double clicked」というメッセージが表示されます。

でも、 !!!UIをセットアップすると、動作しなくなります!! メッセージは表示されなくなります... !!!

誰か理由を教えてください!どうもありがとう、これは緊急です!!!!!!!!!

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 に答える