Results 1 to 3 of 3

Thread: Encountering segmentation fault while accessing QLineEdit

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jun 2009
    Posts
    38
    Thanks
    8
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Encountering segmentation fault while accessing QLineEdit

    Hi,

    I am encountering a Segmentation fault while trying to write somethiing in a LineEdit widget (defined in Ui_MainWindow) from another class sqMap which inherits QGraphicsItem and Ui_MainWindow. The output of gdb's backtracking is as under:
    Qt Code:
    1. Program received signal SIGSEGV, Segmentation fault.
    2. [Switching to Thread 0xb6e8e8e0 (LWP 4644)]
    3. QLineEditPrivate::setText (this=0x0, txt=@0xbff2c200, pos=-1, edited=false) at widgets/qlineedit.cpp:2909
    4. 2909 q->resetInputContext();
    5. (gdb) bt
    6. #0 QLineEditPrivate::setText (this=0x0, txt=@0xbff2c200, pos=-1, edited=false) at widgets/qlineedit.cpp:2909
    7. #1 0xb7b9018b in QLineEdit::setText (this=0x80ce468, text=@0xbff2c200) at widgets/qlineedit.cpp:388
    8. #2 0x08057e3f in sqMap::paint (this=0x80f6278, painter=0xbff2d3ac, option=0x81b7d78, widget=0x8123170) at sqMap.cpp:95
    9. #3 0xb7d8122d in _q_paintItem (item=0x80f6280, painter=0xbff2d3ac, option=0x81b7d78, widget=0x8123170, useWindowOpacity=true,
    10. painterStateProtection=true) at graphicsview/qgraphicsscene.cpp:3754
    11. #4 0xb7d83eca in QGraphicsScenePrivate::drawItemHelper (item=0x80f6280, painter=0xbff2d3ac, option=0x81b7d78, widget=0x8123170,
    12. painterStateProtection=<value optimized out>) at graphicsview/qgraphicsscene.cpp:3810
    13. #5 0xb7d85049 in QGraphicsScene::drawItems (this=0x81a6fb0, painter=0xbff2d3ac, numItems=2, items=0x8140440, options=0x81b7cf4,
    14. widget=0x8123170) at graphicsview/qgraphicsscene.cpp:4036
    15. #6 0xb7d98aac in QGraphicsView::drawItems (this=0x80dcf28, painter=0xbff2d3ac, numItems=2, items=0x8140440, options=0x81b7cf4)
    16. ---Type <return> to continue, or q <return> to quit---bt
    17. at graphicsview/qgraphicsview.cpp:3351
    18. #7 0xb7da20c4 in QGraphicsView::paintEvent (this=0x80dcf28, event=0xbff2d8fc) at graphicsview/qgraphicsview.cpp:3096
    19. #8 0xb784384b in QWidget::event (this=0x80dcf28, event=0xbff2d8fc) at kernel/qwidget.cpp:7301
    20. #9 0xb7b7aec3 in QFrame::event (this=0x80dcf28, e=0xbff2d8fc) at widgets/qframe.cpp:651
    21. #10 0xb7c119ef in QAbstractScrollArea::viewportEvent (this=0x80dcf28, e=0x80f9f68) at widgets/qabstractscrollarea.cpp:943
    22. #11 0xb7d9f70f in QGraphicsView::viewportEvent (this=0x80dcf28, event=0xbff2d8fc) at graphicsview/qgraphicsview.cpp:2337
    23. #12 0xb7c13f95 in QAbstractScrollAreaFilter::eventFilter (this=0x80d9710, o=0x8123170, e=0xbff2d8fc)
    24. at widgets/qabstractscrollarea_p.h:96
    25. #13 0xb739cc4a in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x805f1d8, receiver=0x8123170, event=0xbff2d8fc)
    26. at kernel/qcoreapplication.cpp:694
    To copy to clipboard, switch view to plain text mode 

    Here are some details of the classes used:

    Ui_MainWindow.h
    Generated with the help of Qt Designer but it was defined and used as a simple class instead of a namespace.

    sqMap.h
    My defined class used for displaying a map of squares.
    Qt Code:
    1. class sqMap : public QObject, public QGraphicsItem, public Ui_MainWindow
    2. {
    3. Q_OBJECT
    4.  
    5. public:
    6. sqMap(double Width, double Height, ps_info* processInformation, QGraphicsItem *parent = 0);
    7. QRectF boundingRect() const;
    8. void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    9. void updateLocation(int size);
    10. double getWidth();
    11. double getHeight();
    12.  
    13. protected:
    14. void hoverEnterEvent(QGraphicsSceneHoverEvent *e);
    15. void hoverLeaveEvent(QGraphicsSceneHoverEvent *e);
    16. void mousePressEvent(QGraphicsSceneMouseEvent *e);
    17. void mouseReleaseEvent(QGraphicsSceneMouseEvent *e);
    18. private:
    19. QColor color;
    20. int width;
    21. int height;
    22. bool m_isHovered;
    23. bool m_mouseIsDown; //caters for whether an item has been clicked
    24.  
    25. };
    To copy to clipboard, switch view to plain text mode 

    Definition of paint function for sqMap
    Qt Code:
    1. void sqMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
    2. {
    3. QPen pen;
    4. bool isSelected = (option->state & QStyle::State_Selected) == QStyle::State_Selected;
    5. painter->setBrush(m_isHovered ? Qt::red : color);
    6. painter->drawRect(0,-265,width,height);
    7. if (m_mouseIsDown)
    8. {
    9. lineEdit->setText("something");
    10. }
    11. }
    To copy to clipboard, switch view to plain text mode 

    My Objective:
    When a square is clicked 'something' may display in the LineEdit

    Problem:
    Squares show up finely but a click on it causes Segmetation fault.

    I am struggling for a while to figure out whats wrong and your help may save me a lot of time.

    Thanks
    Last edited by qtzcute; 10th August 2009 at 06:05. Reason: missing [code] tags

Similar Threads

  1. Segmentation Fault accessing QListWidget
    By ljshap in forum Newbie
    Replies: 2
    Last Post: 20th December 2008, 13:00
  2. Pointer Question related to QLineEdit
    By ChrisReath in forum Qt Programming
    Replies: 1
    Last Post: 23rd May 2008, 15:13
  3. Replies: 2
    Last Post: 19th May 2007, 18:25
  4. Segmentation fault running any QT4 executables
    By jellis in forum Installation and Deployment
    Replies: 7
    Last Post: 19th May 2007, 16:35
  5. Icons missing => segmentation fault
    By antonio.r.tome in forum Qt Programming
    Replies: 4
    Last Post: 8th March 2006, 16:30

Tags for this Thread

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.