私の Qt アプリケーションでは、アプリケーションを閉じるときにデータを保存しています。データの保存は closeEvent(QCloseEvent*) メソッドで実行されます。データを保存する前にカーソルを変更し、保存後に元に戻したいと思いました。
私がインターネットで読んだことから、 setCursor( const QCursor& ) はグローバルには機能しませんが、指定されたウィジェットの範囲内でのみ機能します。そのため、WinAPI から SetCursor( HCURSOR ) を使用しようとしました。
コードは次のようになります。
void mainWin::closeEvent( QCloseEvent* e ) {
SetCursor( LoadCursor( GetModuleHandle( NULL ), ( LPCWSTR )IDC_WAIT ) );
saveData();
SetCursor( LoadCursor( GetModuleHandle( NULL ), ( LPCWSTR )IDC_ARROW ) );
e->accept();
}
ただし、最初の SetCursor() メソッドは、カーソルをある種の砂時計に変更するのではなく、データが保存されている間だけ非表示にします。なんで?