MainWindowがあります。MainWindowには、複数のQlabelがあります。ここで、クリックされたQLabelを見つける必要があります。MousePressEventを使用して、クリックされたマウスのX()およびY()位置を取得できます。
この座標を使用してQLabelを識別するにはどうすればよいですか?
X()およびY()座標を使用してクリックされたオブジェクトを見つけるためのQTの関数はありますか?
MainWindowがあります。MainWindowには、複数のQlabelがあります。ここで、クリックされたQLabelを見つける必要があります。MousePressEventを使用して、クリックされたマウスのX()およびY()位置を取得できます。
この座標を使用してQLabelを識別するにはどうすればよいですか?
X()およびY()座標を使用してクリックされたオブジェクトを見つけるためのQTの関数はありますか?
QLabelはQWidgetのサブクラスであるため、QLabel::mousePressEventでマウスプレスイベントを処理できます。
virtual void mousePressEvent ( QMouseEvent * ev )
ただし、QMainWindowでは、childAtを使用してx、yで子ウィジェットを取得できます。
QWidget * QWidget::childAt ( int x, int y ) const
QLabel* label= static_cast<QLabel*>(mainWindow->childAt(x,y));
詳細については、http: //doc.qt.io/qt-5/qwidget.html#childAtをご覧ください。
Qt5ではこれも機能します
QTabBar *widget =(QTabBar*) qApp->widgetAt(QCursor::pos());
マウス座標からクリックされたラベルを特定するのではなく、ラベルのmousePressEvent()
方法を使用することもできます。
たとえば、独自のオーバーロードされたラベルクラスを作成しmousePressEvent()
、clicked()
信号を送信すると、スロットにバインドできます。
widgetAt
内部の機能を使用するQApplication
QWidget *widget = qApp->widgetAt(x,y);
その後、あなたはdynamic_cast
に入ることができますQLabel
。