Sto riscontrando un problema con il rilevamento dei movimenti del mouse in un QMainWindow
. Ho un pulsante di commutazione buttonGenerate
. Ecco il codice per la MainWindow
QMainWindow non traccia il mouse con 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);
}
Quando il pulsante viene attivata, il mouse deve essere monitorato e la sua X & coordinate Y insieme se è abilitata o non dovrebbe essere mostrato in label_5
. Quando il pulsante è disattivato, il tracciamento del mouse dovrebbe essere disattivato e label_5 non aggiornato. Questo non è il caso.
Indipendentemente dal fatto che il pulsante sia premuto, il mouse non viene tracciato. Solo quando tengo premuto un pulsante del mouse verrà aggiornato label_5
e questo è indipendentemente dal fatto che sia attivo setMouseTracking(bool)
.
Qualsiasi intuizione sarebbe molto apprezzata.
Hai verificato che 'checked' in' on_buttonGenerate_toggled' è 'true' quando ti aspetti che sia? –
Sì, l'argomento '% 3' è 1 quando attivato. – nerozehl
Ma si vede solo quando si preme il pulsante del mouse - mi sembra una possibilità che la pressione del mouse settaggi temporaneamente 'hasMouseTracking' su 1. Quindi lo verificherei in' on_buttonGenerate_toggled'. –