Results 1 to 2 of 2

Thread: keyboard event + qlabel rerending problem

  1. #1
    Join Date
    Aug 2012
    Posts
    2
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Unix/X11

    Default keyboard event + qlabel rerending problem

    Hey guys, I'm just having a weird problem when I try to change qlabels focus with the keyboard. My problem is, I have 4 qlabels like a gridlayout with 2 columns and 2 rows. Since my application doesn't have a touchscreen display I had to override the keyPressEvent to manipulate the keyboard events. The problem is, when any directional key to change the selected label it doesn't rerender it, but if I press another key, the label just rerender as I want! I just debugged it and the label got the focus, but don't rerender the image. That's my code:

    PS: I'll do some code refactoring on the code, I just did that do make easier(or not) to see what's the problem.

    Qt Code:
    1. //Refact THIS!!!
    2. void MenuWindow::keyPressEvent(QKeyEvent *event){
    3. if(event->key() == Qt::Key_Escape){
    4. back->setFocus();
    5. return;
    6. }
    7.  
    8. if(configLabel->hasFocus()){
    9. //REFATORAR. EXTRACT METHOD
    10. cout << "CONFIG LABEL COM FOCO!" << endl;
    11. configLabelImage->load(STRING_PATH_TO_IMAGES+"icone_configuracoes_selected.png");
    12. if(event->key() == Qt::Key_Down){
    13. configLabelImage->load(STRING_PATH_TO_IMAGES+"icone_configuracoes.png");
    14. storageLabel->setFocus();
    15. }else if(event->key() == Qt::Key_Right){
    16. configLabelImage->load(STRING_PATH_TO_IMAGES+"icone_configuracoes.png");
    17. multimediaLabel->setFocus();
    18. }
    19. configLabel->setPixmap(QPixmap::fromImage(*configLabelImage));
    20. }else if(multimediaLabel->hasFocus()){
    21. cout << "MULTI LABEL COM FOCO!" << endl;
    22. multimediaLabelImage->load(STRING_PATH_TO_IMAGES+"icone_multimedia_selected.png");
    23. if(event->key() == Qt::Key_Down){
    24. multimediaLabelImage->load(STRING_PATH_TO_IMAGES+"icone_multimedia.png");
    25. energyLabel->setFocus();
    26. }else if(event->key() == Qt::Key_Left){
    27. multimediaLabelImage->load(STRING_PATH_TO_IMAGES+"icone_multimedia.png");
    28. configLabel->setFocus();
    29. }
    30. multimediaLabel->setPixmap(QPixmap::fromImage(*multimediaLabelImage));
    31. }else if(storageLabel->hasFocus()){
    32. cout << "STORAGE LABEL COM FOCO!" << endl;
    33. storageLabelImage->load(STRING_PATH_TO_IMAGES+"icone_armazenamento_selected.png");
    34. if(event->key() == Qt::Key_Up){
    35. storageLabelImage->load(STRING_PATH_TO_IMAGES+"icone_armazenamento.png");
    36. configLabel->setFocus();
    37. }else if(event->key() == Qt::Key_Right){
    38. storageLabelImage->load(STRING_PATH_TO_IMAGES+"icone_armazenamento.png");
    39. energyLabel->setFocus();
    40. }else if(event->key() == Qt::Key_Down){
    41. storageLabelImage->load(STRING_PATH_TO_IMAGES+"icone_armazenamento.png");
    42. select->setFocus();
    43. }
    44. storageLabel->setPixmap(QPixmap::fromImage(*storageLabelImage));
    45. }else if(energyLabel->hasFocus()){
    46. cout << "ENERGy LABEL COM FOCO!" << endl;
    47. energyLabelImage->load(STRING_PATH_TO_IMAGES+"icone_energia_selected.png");
    48. if(event->key() == Qt::Key_Up){
    49. energyLabelImage->load(STRING_PATH_TO_IMAGES+"icone_energia.png");
    50. multimediaLabel->setFocus();
    51. }else if(event->key() == Qt::Key_Left){
    52. energyLabelImage->load(STRING_PATH_TO_IMAGES+"icone_energia.png");
    53. storageLabel->setFocus();
    54. }else if(event->key() == Qt::Key_Down){
    55. energyLabelImage->load(STRING_PATH_TO_IMAGES+"icone_energia.png");
    56. select->setFocus();
    57. }
    58. energyLabel->setPixmap(QPixmap::fromImage(*energyLabelImage));
    59. }else if(select->hasFocus()){
    60. cout << "SELECT COM FOCO" << endl;
    61. if(event->key() == Qt::Key_Up){
    62. storageLabel->setFocus();
    63. }else if(event->key() == Qt::Key_Right){
    64. back->setFocus();
    65. }
    66. }else if(back->hasFocus()){
    67. cout << "BACK COM FOCO" << endl;
    68. if(event->key() == Qt::Key_Up){
    69. energyLabel->setFocus();
    70. }else if(event->key() == Qt::Key_Left){
    71. select->setFocus();
    72. }
    73. }
    74.  
    75. }
    To copy to clipboard, switch view to plain text mode 


    Tks in advance!

  2. #2
    Join Date
    Jan 2006
    Location
    Munich, Germany
    Posts
    4,714
    Thanks
    21
    Thanked 418 Times in 411 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Re: Вот , что хочу сказать...

    @Rource:
    This is an English speaking forum, please use English - as people from all over the world use it, an most non Russians can't read non English posts.
    I will let you some time to rewrite your post in English, if not, I will delete it.
    ==========================signature=============== ==================
    S.O.L.I.D principles (use them!):
    https://en.wikipedia.org/wiki/SOLID_...iented_design)

    Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.

Similar Threads

  1. QLabel mouse event problem
    By danics in forum Qt Programming
    Replies: 2
    Last Post: 11th March 2010, 13:38
  2. Keyboard event and QTextEdit
    By kaszewczyk in forum Newbie
    Replies: 2
    Last Post: 2nd November 2009, 19:30
  3. Mouse & KeyBoard Event
    By anafor2004 in forum Newbie
    Replies: 2
    Last Post: 26th October 2009, 11:39
  4. How to grad keyboard event
    By lengshuang in forum Qt Programming
    Replies: 1
    Last Post: 8th April 2009, 13:03
  5. how to manipulate the keyboard event?
    By Ricardo_arg in forum Qt Programming
    Replies: 2
    Last Post: 4th August 2008, 07:49

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.