PDA

View Full Version : Segmentation fault when adding QListWidgetItem



jokob
28th March 2010, 12:50
Hi,

I am having a problem adding a new QListWidgetItem into a QListWidget. Could you please take a look at my code if you see any problems? I am using haskell.



module Main where

import Qtc.Classes.Base
import Qtc.Classes.Qccs
import Qtc.Classes.Qccs_h
import Qtc.Classes.Core
import Qtc.Classes.Gui
import Qtc.Classes.Network
import Qtc.Enums.Base
import Qtc.ClassTypes.Core
import Qtc.Core.Base
import Qtc.Enums.Core.Qt
import Qtc.Core.QSize
import Qtc.Core.QCoreApplication
import Qtc.Core.QIODevice
import Qtc.Enums.Core.QIODevice
import Qtc.Core.QFile
import Qtc.ClassTypes.Gui
import Qtc.Gui.Base
import Qtc.Gui.QApplication
import Qtc.Gui.QWidget
import Qtc.Gui.QColor
import Qtc.Gui.QSpinBox
import Qtc.Gui.QTextEdit
import Qtc.Gui.QListWidgetItem
import Qtc.Gui.QListWidget
import Qtc.Gui.QLineEdit
import Qtc.Gui.QPushButton
import Qtc.Gui.QPushButton_h
import Qtc.ClassTypes.Network
import Qtc.Network.QHostAddress
import Qtc.Network.QAbstractSocket
import Qtc.Enums.Network.QAbstractSocket
import Qtc.Network.QTcpSocket
import Qtc.ClassTypes.Tools
import Qtc.Tools.QUiLoader
import Qtc.Tools.QUiLoader_h
import Control.Monad
import Qtc.Classes.Object

type MyQWidget = QWidgetSc (CMyQWidget)
data CMyQWidget = CMyQWidget

myQWidget :: (QWidget ()) -> IO (MyQWidget)
myQWidget mw = qSubClass $ qCast_QWidget mw

main :: IO ()
main
= do
app <- qApplication ()
rok <- registerResource "mainwindow.rcc"
loader <- qUiLoader ()
uiFile <- qFile "mainwindow.ui"
open uiFile fReadOnly
ui <- load loader uiFile
close uiFile ()
mwb <- ui_init ui
qshow mwb ()
ok <- qApplicationExec ()
returnGC

ui_init :: QWidget () -> IO MyQWidget
ui_init ui
= do
ui_url <- findChild ui ("<QLineEdit*>", "lineEdit_url") -- URL
ui_reg <- findChild ui ("<QLineEdit*>", "lineEdit_reg") -- regular expression
ui_log <- findChild ui ("<QLineEdit*>", "lineEdit_log") -- login
ui_pwd <- findChild ui ("<QLineEdit*>", "lineEdit_pwd") -- password
ui_dpt <- findChild ui ("<QSpinBox*>", "spinBox_dpt") -- depth
ui_trv <- findChild ui ("<QTreeView*>", "treeView") -- treeview area (left)
ui_lst <- findChild ui ("<QListWidget*>", "listWidget") -- listView area (right)
ui_b_log <- findChild ui ("<QPushButton*>", "pushButton_log") :: IO (QPushButton ()) -- button login
mwb <- myQWidget ui
connectSlot ui_b_log "clicked()" mwb "logClicked()" $ logClicked ui_url ui_dpt ui_pwd ui_log ui_trv ui_lst
return mwb

-- function called when the button "Login" clicked
logClicked :: QLineEdit () -> QSpinBox () -> QLineEdit () -> QLineEdit () -> QTreeView () -> QListWidget () -> MyQWidget -> IO ()
logClicked url depth password login tree_view list_widget mwb
= do
setText url "button Login clicked, function logClicked"
newitem <- qListWidgetItem "text"
addItem list_widget newitem -- error happens if this gets executed
return ()


The problem line is number 83.
Thanks in advance for any help,
jokob

ps. to compile you need the ui file attached