terça-feira, 24 de setembro de 2013

QT: Trocando o cursor do mouse

Em alguns projetos há a necessidade de trocar o cursor do mouse para indicar ao usuário que houve alguma mudança, uma troca de ferramenta por exemplo. Com QT podemos trocar o cursor facilmente com apenas alguns comandos.

Quando precisamos informar para o usuário que o sistema está calculando algo que vai demorar para ser finalizado, podemos sobrescrever o cursor ativo por um cursor global de espera que indicará que o sistema está ocupado. É necessário restaurar o cursor após sobrescrever o cursor global, pois senão não haverá interação com Widgets de modo geral.

Exemplo:

QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
calculate();            
QApplication::restoreOverrideCursor();


Essa função não é muito útil para o uso em geral nas aplicações, pois remove o poder de troca de cursor que o QT dá para cada Widget especificamente.

Com QT podemos programar para cada Widget como que o mouse se comportará quando estiver dentro dele. Podemos usar enumeradores que são estáticos no QT ou usar imagens customizáveis por nós mesmos:

Exemplo enumerador:

mWidget->setCursor(QCursor(Qt::CrossCursor))

Exemplo customizável:

//com esse comando podemos escalar a imagem para o tamanho adequado
QPixmap pix = QPixmap("ponteirocustomizavel.png").scaled(32,32, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QCursor c = QCursor(pix);
mWidget->setCursor(c);



Geralmente muda-se o ponteiro apenas quando este estiver dentro do centralWidget do MainWindow, logo basta usar a função setCursor() do centralWidget assim:

mMainWindow->setCursor(QCursor(Qt::CrossCursor));

Nenhum comentário:

Postar um comentário