Qt マウス クリック イベント処理: マウス クリック位置の表示 (完全な例)

Qt 入門実践チュートリアル (目次)

前駆的な記事:

Qt Creator は Qt のデフォルト ウィンドウ プログラムを作成します(推奨)

イベントとは何ですか

イベントは、さまざまなアプリケーションが知る必要がある、アプリケーションの内部または外部で発生する物事やアクションの総称です。

イベント駆動型のGUIウィンドウプログラム。

たとえば、マウスをクリックしてボタンを押します。オブジェクトは Qt でイベントを表すために使用され、QEvent クラスから継承されます。

よくあるイベント


マウス イベント (マウスの左ボタンのクリックなど)、キーボード イベント (キーボードのキーを押すなど)、時間指定イベント、コンテキスト メニュー イベント、閉じるイベント、ドラッグ アンド ドロップ イベント、描画イベントなどです。

よくあるイベント

void paintEvent(QPaintEvent *);//自定义绘制窗口内容

イベントが発生した後は、マウスの左ボタンをクリックするとプログラムからフィードバックが得られるのと同じように、イベントを処理する必要があります。

イベント処理

QWidget クラスには、サブクラスでオーバーライドするのを待っている多くの仮想関数が用意されており、通常、これらの関数をオーバーライドすることで、特定のウィジェットの典型的なイベントを処理します。

もちろん、オブジェクトにイベント フィルターをインストールすることもできます。イベント フィルターを使用して、1 つのインターフェイス クラスでさまざまなサブコンポーネントのさまざまなイベントを同時に処理します。

マウスプレスイベントの処理(例)

プロジェクトの作成

まず、QtMousePressEvent という名前の Qt デフォルト ウィンドウ プログラムを作成します。

参考:Qt CreatorはQtのデフォルトウィンドウプログラムを作成します

マウスイベント応答機能を追加

Qtのマウスイベントに応答してマウスの座標を表示してみます。

Qt Creator >> 編集 >> プロジェクト >> ヘッダー >> mainwindow.h を開きます。

右键 class MainWindow >> リファクタリング >> 基本クラスの仮想関数を挿入

以下に示すように:

「QWidget」>> 「mousePressEvent」を選択します。

挿入オプション:

>> 実装ファイルに定義を挿入 >> OK

以下に示すように:

マウスの位置を表示

マウスの現在位置を表示するコントロールをウィンドウに追加します。

フォームを開く >> mainwindow.ui (ダブルクリックして開きます)

Ui ファイルに labelmove という名前のラベルを配置して、座標の移動を表示します

Label コントロールの名前を label_mouse_position に変更します。

マウスが押された場所を表示する

オープンソース >> mainwindow.cpp

ヘッダーファイルインクルードを追加

>> #include <QMouseEvent>

>> MainWindow:: mousePressEvent

関数内に次のコードを追加します。

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    ui->label_mouse_position->move(event->pos());//鼠标点击哪里,label就在哪里显示
    auto pos = event->pos();//获得鼠标点击的位置
    QString text = QString("mouse postion (%1, %2)").arg(pos.x()).arg(pos.y());//生成文本内容
    ui->label_mouse_position->setText(text);//设置label的内容,用于显示
    ui->label_mouse_position->adjustSize();//根据内容调整label的大小,以显示全部内容
}

ランニング効果デモ

コードのダウンロード

百度クラウド

リンク: https://pan.baidu.com/s/1XgN49hIvVhOLKuB3iLNaJQ

抽出コード:1234

Giteeコードクラウド

https://gitee.com/carea/learn-qt-with-code/tree/master/QtMousePressEvent

記録を更新

2023-08-13 QString のフォーマットでは、より安全で標準化された方法が使用されます

おすすめ

転載: blog.csdn.net/ClamReason/article/details/132678757