QMainWindow
でマウスの動きを追跡する際に問題があります。私はトグルボタンbuttonGenerate
を持っています。ここでボタンがトグルされるMainWindow
QMainWindowはsetMouseTracking()でマウスを追跡しません
class MainWindow : public QMainWindow, private Ui::MainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
protected:
void mouseMoveEvent(QMouseEvent *);
private slots:
void on_buttonGenerate_toggled(bool checked);
};
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
label_5->setText(tr("%1 %2 %3")
.arg(event->x())
.arg(event->y())
.arg(hasMouseTracking()));
event->ignore();
}
void MainWindow::on_buttonGenerate_toggled(bool checked)
{
buttonGenerate->setText(checked
? tr("Stop")
: tr("Start"));
setMouseTracking(checked);
}
ためのコードであり、マウスを追跡し、そのX & Yは、トラッキングが有効であるか、label_5
に示されるべきであるか否かと一緒に座標されるべきです。ボタンをオフにすると、マウスのトラッキングはオフになり、label_5は更新されません。これはそうではありません。
ボタンが押されているかどうかにかかわらず、マウスは追跡されていません。私がマウスボタンを押したままになると、label_5
が更新されます。これはsetMouseTracking(bool)
がアクティブであるかどうかにかかわらずです。
洞察力があれば幸いです。
あなたは 'on_buttonGenerate_toggled'で' checked'が期待どおりに 'true'であることを確認しましたか? –
はい、 '%3'引数はトグル時に1です。 – nerozehl
しかし、あなたはマウスボタンを押している時だけ、マウスのプレスが一時的に 'hasMouseTracking'を1に設定する可能性があると私に気付きます。それで' on_buttonGenerate_toggled'で確認します。 –