QWidgetをベースにした独自のクラスがあります。このウィジェットをQMainWindowに配置し、このウィジェットでマウスのクリックをキャッチする必要があります。
私は試した:
connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));
しかし、何も起こっていません。どうすればできますか?
QWidgetにはclicked()シグナルがなく、QMainWindowにはexit()スロットがありません。存在しない信号や存在しないスロットに接続することはできません。接続が成功した場合、接続の戻り値はtrueでなければなりません。接続時にこの値を確認して、コードが正しく機能することを確認してください。
アプリケーションを終了するには、qApp->quit()
を呼び出す必要があります
また、他の人が言及したように、eventFilterをインストールするか、
_void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]
_
または
_void QWidget::mouseReleaseEvent ( QMouseEvent * event ) [virtual protected]
_
メソッド。
Qtの公式ドキュメントには多くの例があります this たとえば、mousePressEvent(QMouseEvent *event)
メソッドを再実装します。
EventFilterオプションについては、 this の小さな例を参照してください。
お役に立てれば。
QWidget
にはclicked
信号がありません。これを機能させるには、イベントを使用します。すべてのウィジェットはイベントをサポートしているため、手動で行う作業がいくつかありますが、多くはありません。
event
関数をオーバーライドします(これはQWidget
から派生します)QEvent:: MouseButtonPress
のイベントに応答するまたは、eventFilter
メソッドを追加します。
コードサンプルと、正確なニーズに応じて完全なソリューションを実現するために、私が言及したクラスとメソッドをグーグルします。