Results 1 to 5 of 5

Thread: Connect not working

  1. #1
    Join Date
    Jul 2006
    Posts
    126
    Thanks
    17
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows

    Default Connect not working

    I'm working in a program that draws in a QPainter surface objects. I want to connect 2 scrollbars with translate() of QPainter and it isn't working.
    Can you say me what i'm doing wrong?

    Canvas.h file:
    Qt Code:
    1. #pragma once
    2.  
    3. #include <QWidget>
    4. #include <QPainter>
    5.  
    6. class Canvas:public QWidget{
    7. public:
    8. Canvas(QWidget *parent=0);
    9. ~Canvas();
    10. public slots:
    11. void translateX(int x);
    12. void translateY(int y);
    13. private:
    14. void paintEvent(QPaintEvent *);
    15.  
    16. qreal trans_x,trans_y;
    17. };
    18.  
    19. class wCanvas:public QWidget{
    20. public:
    21. wCanvas(QWidget *parent=0);
    22. ~wCanvas();
    23. private:
    24. Canvas *canvas;
    25. };
    To copy to clipboard, switch view to plain text mode 
    Canvas.cpp file:
    Qt Code:
    1. #include "Canvas.h"
    2.  
    3. #include <QGridLayout>
    4. #include <QScrollBar>
    5.  
    6. // Implementación de Canvas
    7. Canvas::Canvas(QWidget *parent):QWidget(parent),trans_x(0),trans_y(0){
    8. setPalette(QPalette(Qt::white));
    9. setAutoFillBackground(true);
    10. }
    11.  
    12. Canvas::~Canvas(){
    13. }
    14.  
    15. void Canvas::paintEvent(QPaintEvent *){
    16. QPainter painter(this);
    17.  
    18. painter.translate(trans_x,trans_y);
    19. // Fondo transparente
    20. painter.setPen(Qt::lightGray);
    21. painter.setBrush(Qt::lightGray);
    22. painter.drawRect(0,0,width()/2-1,height()/2-1);
    23. painter.drawRect(width()/2,height()/2,width()/2,height()/2);
    24. // Fin fondo transparente
    25.  
    26. }
    27.  
    28. void Canvas::translateX(int x){
    29. trans_x+=x;
    30. }
    31.  
    32. void Canvas::translateY(int y){
    33. trans_y+=y;
    34. }
    35.  
    36. // Implementación de QCanvas
    37. wCanvas::wCanvas(QWidget *parent):QWidget(parent){
    38. canvas=new Canvas;
    39. canvas->setMinimumSize(800,600);
    40. QScrollBar *hScrollBar=new QScrollBar(Qt::Horizontal);
    41. hScrollBar->setRange(-100,100);
    42. hScrollBar->setValue(0);
    43. QScrollBar *vScrollBar=new QScrollBar(Qt::Vertical);
    44. vScrollBar->setRange(-100,100);
    45. vScrollBar->setValue(0);
    46.  
    47. connect(hScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateX(int)));
    48. connect(vScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateY(int)));
    49.  
    50. QGridLayout *gridLayout=new QGridLayout;
    51. gridLayout->setMargin(0);
    52. gridLayout->setSpacing(0);
    53. gridLayout->addWidget(canvas,0,0);
    54. gridLayout->addWidget(vScrollBar,0,1);
    55. gridLayout->addWidget(hScrollBar,1,0);
    56. setLayout(gridLayout);
    57. }
    58.  
    59. wCanvas::~wCanvas(){
    60. delete canvas;
    61. }
    To copy to clipboard, switch view to plain text mode 
    Many thanks

  2. #2
    Join Date
    Mar 2006
    Posts
    19
    Thanks
    1

    Default Re: Connect not working

    u have to set "setSliderDown (true)"..this is responsible for sending the SliderMoved events

  3. #3
    Join Date
    Jul 2006
    Posts
    126
    Thanks
    17
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: Connect not working

    With hScrollBar->setSliderDown(true) it's the same. I have tried valueChanged(int) too and nothing

  4. #4
    Join Date
    Mar 2006
    Posts
    48
    Thanks
    5
    Thanked 4 Times in 3 Posts

    Default Re: Connect not working

    u forgot Q_OBJECT

  5. #5
    Join Date
    Jul 2006
    Posts
    126
    Thanks
    17
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: Connect not working

    Ouch! Hehehe I thinked that Q_OBJECT is only needed when using signals in a class.

    Thanks

Similar Threads

  1. Replies: 1
    Last Post: 11th June 2006, 22:25
  2. connect on a popup
    By mickey in forum Qt Programming
    Replies: 2
    Last Post: 12th April 2006, 16:37
  3. Signals/Slots stopped working
    By Jimmy2775 in forum Qt Programming
    Replies: 8
    Last Post: 31st March 2006, 21:11
  4. [QT4 & XP] connect on QtreeView
    By incapacitant in forum Newbie
    Replies: 1
    Last Post: 2nd March 2006, 11:08

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.