[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    error using qlistviewitems
From:       Grégoire_Alexandre <gregoire.alex () easynet ! be>
Date:       2004-11-30 23:10:09
Message-ID: 200412010010.09961.gregoire.alex () easynet ! be
[Download RAW message or body]

Hi guys,

I tried to make a qdialog with a qlistview and of course qlistviewitems, but I 
got a segmentation fault.

When I create a new qlistviewitem and just after calling setText it works but 
if I create an qlistviewitem in the qdialog's constructor and then call 
setText in languageChange() it doesnt work.

the variable is declared in the header file.

Interesting lines : 
beOptionsWidget.cpp:124
beOptionsWidget.cpp:221

Thanks,
Alex

["beOptionsWidget.cpp" (text/x-c++src)]

#include "beOptionsWidget.h"
// Qt stuff
#include <qlistview.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <qlayout.h>
// kvirc stuff
#define HAVE_CONFIG_H
#include "config.h"
#include <kvirc/3.0.1/kvi_app.h>
#include <kvirc/3.0.1/kvi_ircserverdb.h>
#include <kvirc/3.0.1/kvi_confignames.h>

extern KVIRC_API KviIrcServerDataBase           * g_pIrcServerDataBase;

beOptionsWidget::beOptionsWidget(QWidget * parent,const char * name, WFlags f) : \
QDialog(parent,name,true,f) {
	widgetStack = new QWidgetStack( this, "widgetStack" );
	widgetStack->setGeometry( QRect( 180, 10, 300, 300 ) );
	
	WStackPage_connect = new QWidget( widgetStack, "WStackPage_connect" );
	
	textLabelFullName = new QLabel( WStackPage_connect, "labelFullName" );
// 	textLabelFullName->setGeometry( QRect( 10, 13, 90, 22 ) );
	textLabelFullName->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
	lineEditFullName = new QLineEdit( WStackPage_connect, "editFullName" );
// 	lineEditFullName->setGeometry( QRect( 106, 13, 140, 22 ) );

	textLabelEmail = new QLabel( WStackPage_connect, "LabelEmail" );
// 	textLabelEmail->setGeometry( QRect( 10, 41, 90, 22 ) );
	textLabelEmail->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
	lineEditEmail = new QLineEdit( WStackPage_connect, "lineEditEmail" );
// 	lineEditEmail->setGeometry( QRect( 106, 41, 140, 22 ) );

	textLabelNickname = new QLabel( WStackPage_connect, "textLabelNickname" );
// 	textLabelNickname->setGeometry( QRect( 10, 80, 90, 22 ) );
	textLabelNickname->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
	lineEditNickname = new QLineEdit( WStackPage_connect, "lineEditNickname" );
// 	lineEditNickname->setGeometry( QRect( 106, 80, 123, 22 ) );
	
	textLabelAlternativeNick = new QLabel( WStackPage_connect, \
"textLabelAlternativeNick" ); // 	textLabelAlternativeNick->setGeometry( QRect( 10, \
110, 91, 21 ) );  textLabelAlternativeNick->setAlignment( int( QLabel::AlignVCenter | \
QLabel::AlignRight ) );  lineEditAlternativeNick = new QLineEdit( WStackPage_connect, \
"lineEditAlternativeNick" ); // 	lineEditAlternativeNick->setGeometry( QRect( 106, \
107, 123, 22 ) );

	checkBoxInvisibleMode = new QCheckBox( WStackPage_connect, "checkBoxInvisibleMode" \
);  checkBoxInvisibleMode->setGeometry( QRect( 130, 134, 123, 20 ) );

	textLabelServer = new QLabel( WStackPage_connect, "textLabelServer" );
	textLabelServer->setGeometry( QRect( 40, 170, 80, 16 ) );
	textLabelServer->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
	textLabelServerValue = new QLabel( WStackPage_connect, "textLabelServerValue" );
	textLabelServerValue->setGeometry( QRect( 130, 170, 115, 15 ) );

	checkBoxNewServer = new QCheckBox( WStackPage_connect, "checkBoxNewServer" );
	checkBoxNewServer->setGeometry( QRect( 130, 200, 143, 20 ) );

	pushButtonConnectToServer = new QPushButton( WStackPage_connect, \
"pushButtonConnectToServer" );  pushButtonConnectToServer->setGeometry( QRect( 130, \
220, 142, 24 ) );  pushButtonNewServer = new QPushButton( WStackPage_connect, \
"pushButtonNewServer" );  pushButtonNewServer->setGeometry( QRect( 280, 220, 30, 30 ) \
);  pushButtonNewServer->setPixmap(QPixmap::fromMimeSource("connect_creating.png"));


	QGridLayout * namelayout = new QGridLayout();
	namelayout->setMargin(11);
	namelayout->setSpacing(5);
	namelayout->addWidget(textLabelFullName, 0, 0);
	namelayout->addWidget(lineEditFullName, 0, 1);
	namelayout->addWidget(textLabelEmail, 1, 0);
	namelayout->addWidget(lineEditEmail, 1, 1);
	QGridLayout * nicklayout = new QGridLayout();
	namelayout->setMargin(11);
	nicklayout->setSpacing(5);
	nicklayout->addWidget(textLabelNickname, 2, 0);
	nicklayout->addWidget(lineEditNickname, 2, 1);
	nicklayout->addWidget(textLabelAlternativeNick, 3, 0);
	nicklayout->addWidget(lineEditAlternativeNick, 3, 1);
	
	QVBoxLayout * pagelayout = new QVBoxLayout(WStackPage_connect);
	pagelayout->setName("pagelayout");
// 	pagelayout->setMargin(11);
// 	pagelayout->setSpacing(6);
	pagelayout->addLayout(namelayout);
	pagelayout->addLayout(nicklayout);
	pagelayout->addStretch(1);
// 	pagelayout->addLayout(connectlayout);


	QGridLayout * connectlayout = new QGridLayout(WStackPage_connect);
	connectlayout->setName("connectlayout");
	connectlayout->addWidget(checkBoxNewServer, 0, 0);
	connectlayout->addWidget(pushButtonConnectToServer, 1, 0);
	connectlayout->addWidget(pushButtonNewServer, 1, 1);
	
// 	textLabel2 = new QLabel( WStackPage_connect, "textLabel2" );
// 	textLabel2->setGeometry( QRect( 10, 10, 85, 15 ) );
	widgetStack->addWidget( WStackPage_connect, 0 );
	
	WStackPage_cservers = new QWidget( widgetStack, "WStackPage_cservers" );
	
	textLabel3 = new QLabel( WStackPage_cservers, "textLabel3" );
	textLabel3->setGeometry( QRect( 10, 10, 85, 15 ) );
	widgetStack->addWidget( WStackPage_cservers, 1 );
	
	WStackPage_coptions = new QWidget( widgetStack, "WStackPage_coptions" );
	
	textLabel4 = new QLabel( WStackPage_coptions, "textLabel4" );
	textLabel3->setGeometry( QRect( 11, 11, 85, 15 ) );
	widgetStack->addWidget( WStackPage_coptions, 2);

	// ListView
	listView = new QListView( this, "listView" );
	listView->addColumn( tr( "Type" ) );
	listView->header()->hide();
	listView->setSorting(-1);
	listView->setGeometry( QRect( 20, 10, 120, 171 ) );
	listView->setRootIsDecorated( TRUE );
	

	listviewitem_connect_servers = new QListViewItem( listView, 0 );
// 	listviewitem_connect_options = new QListViewItem( listviewitem_connect, \
listviewitem_connect_servers ); // 	listviewitem_connect_localinfo = new \
QListViewItem( listviewitem_connect, listviewitem_connect_options ); // \
listviewitem_irc = new QListViewItem( listView, listviewitem_connect); // \
listviewitem_irc_options = new QListViewItem( listviewitem_irc, 0); // \
listviewitem_irc_highlight = new QListViewItem( listviewitem_irc, \
listviewitem_irc_options); // 	listviewitem_irc_messages = new QListViewItem( \
listviewitem_irc, listviewitem_irc_highlight); // 	listviewitem_irc_catcher = new \
QListViewItem( listviewitem_irc, listviewitem_irc_messages); // \
listviewitem_irc_logging = new QListViewItem( listviewitem_irc, \
listviewitem_irc_catcher); // 	listviewitem_irc_flood = new QListViewItem( \
listviewitem_irc, listviewitem_irc_logging);     // 	listviewitem_sounds = new \
QListViewItem( listView, listviewitem_irc); // 	listviewitem_sounds_requests = new \
QListViewItem( listviewitem_sounds, 0); // 	listviewitem_sounds_agents = new \
QListViewItem( listviewitem_sounds, listviewitem_sounds_requests); // \
listviewitem_mouse = new QListViewItem( listView, listviewitem_sounds); // \
listviewitem_mouse_dragdrop = new QListViewItem( listviewitem_mouse, 0); // \
listviewitem_dcc = new QListViewItem( listView, listviewitem_mouse); // \
listviewitem_dcc_options = new QListViewItem( listviewitem_dcc, 0); // \
listviewitem_dcc_folders = new QListViewItem( listviewitem_dcc, \
listviewitem_dcc_options); // 	listviewitem_dcc_ignore = new QListViewItem( \
listviewitem_dcc, listviewitem_dcc_folders); // 	listviewitem_dcc_fserve = new \
QListViewItem( listviewitem_dcc, listviewitem_dcc_ignore); // \
listviewitem_dcc_server = new QListViewItem( listviewitem_dcc, \
listviewitem_dcc_fserve); // 	listviewitem_display = new QListViewItem( listView, \
listviewitem_dcc); // 	listviewitem_display_options = new QListViewItem( \
listviewitem_display, 0); // 	listviewitem_other = new QListViewItem( listView, \
listviewitem_display); // 	listviewitem_other_lock = new QListViewItem( \
listviewitem_other, 0);  
// 	listviewitem_connect->setOpen( TRUE );
	
	m_views.insert(listviewitem_connect,WStackPage_connect);
	m_views.insert(listviewitem_connect_servers,WStackPage_cservers);
	m_views.insert(listviewitem_connect_options,WStackPage_coptions);

// 	QHBoxLayout * mainlayout = new QHBoxLayout(this);
// 	mainlayout->addWidget(listView);
// 	mainlayout->addWidget(widgetStack);
	
	qDebug("languageChange");
	languageChange();
	qDebug("updateCurrentServer");
	updateCurrentServer();
        connect( listView, SIGNAL( selectionChanged(QListViewItem*) ), this, SLOT( \
changeWidget(QListViewItem*) ));  
	connect( pushButtonConnectToServer, SIGNAL ( clicked() ), parent, SLOT( \
newConnection() ));  connect( pushButtonNewServer, SIGNAL( clicked() ), this, SLOT( \
switchConnectWidgets() ));  
	setCaption("beIRC Options");
// 	setMinimumSize(500, 500);
	resize( QSize(500, 500).expandedTo(minimumSizeHint()) );
	clearWState( WState_Polished );
}

beOptionsWidget::~beOptionsWidget()
{
}

void beOptionsWidget::changeWidget( QListViewItem * selectedViewItem )
{
    QWidget* page = m_views[selectedViewItem];
    if(!page)
    	return;
    if(listView->currentItem() != selectedViewItem)
    	listView->setCurrentItem(selectedViewItem);

    widgetStack->raiseWidget(page);    
}

void beOptionsWidget::switchConnectWidgets()
{
   if(listView->currentItem() == listviewitem_connect)
   	changeWidget(listviewitem_connect_servers);
   else
   	changeWidget(listviewitem_connect);
	
}

void beOptionsWidget::languageChange()
{
    setCaption( tr( "beIRC" ) );
//     textLabel2->setText( tr( "This is page 1" ) );
    textLabel3->setText( tr( "This is page 2" ) );
    textLabel4->setText( tr( "This is page 3" ) );
    listView->header()->setLabel( 0, tr( "Type" ) );
    listView->clear();
    
    // Connect page :
    textLabelFullName->setText( tr( "Full Name:"));
    textLabelEmail->setText( tr( "Email Address:" ) );
    textLabelNickname->setText( tr( "Nickname:" ) );
    textLabelAlternativeNick->setText( tr( "Alternative:" ) );
    checkBoxInvisibleMode->setText( tr( "Invisible mode" ) );
    textLabelServer->setText( tr( "Server:" ) );
    textLabelServerValue->setText( tr( "Outsiderz: Random" ) );
    checkBoxNewServer->setText( tr( "New server window" ) );
    pushButtonConnectToServer->setText( tr( "Connect To Server" ) );
    pushButtonNewServer->setText( QString::null );

    // ListView
    qDebug("listview connect");
    listviewitem_connect = new QListViewItem( listView, 0 );
    listviewitem_connect->setText( 0, tr( "Connect" ) );
    qDebug("listview connect server");
    listviewitem_connect_servers->setText( 0, tr( "Servers" ) );
    qDebug("listview connect options");
    listviewitem_connect_options->setText( 0, tr( "Options" ) );
    listviewitem_connect_localinfo->setText( 0, tr( "Local info" ) );
    
//     listviewitem_irc->setText( 0, tr( "IRC" ) );
//     listviewitem_irc_options->setText( 0, tr( "Options" ) );
//     listviewitem_irc_highlight->setText( 0, tr( "Highlight" ) );
//     listviewitem_irc_messages->setText( 0, tr( "Messages" ) );
//     listviewitem_irc_catcher->setText( 0, tr( "Catcher" ) );
//     listviewitem_irc_logging->setText( 0, tr( "Logging" ) );
//     listviewitem_irc_flood->setText( 0, tr( "Flood" ) );    
//     listviewitem_sounds->setText( 0, tr( "Sounds" ) );
//     listviewitem_sounds_requests->setText( 0, tr( "Requests" ) );
//     listviewitem_sounds_agents->setText( 0, tr( "Agents" ) );
//     listviewitem_mouse->setText( 0, tr( "Mouse" ) );
//     listviewitem_mouse_dragdrop->setText( 0, tr( "Drag Drop" ) );
//     listviewitem_dcc->setText( 0, tr( "DCC" ) );
//     listviewitem_dcc_options->setText( 0, tr( "Options" ) );
//     listviewitem_dcc_folders->setText( 0, tr( "Folders" ) );
//     listviewitem_dcc_ignore->setText( 0, tr( "Ignore" ) );
//     listviewitem_dcc_fserve->setText( 0, tr( "Fserve" ) );
//     listviewitem_dcc_server->setText( 0, tr( "Server" ) );
//     listviewitem_display->setText( 0, tr( "Display" ) );
//     listviewitem_display_options->setText( 0, tr( "Options" ) );
//     listviewitem_other->setText( 0, tr( "Other" ) );
//     listviewitem_other_lock->setText( 0, tr( "Lock" ) );
    
}

void beOptionsWidget::selectConnectServers()
{
    listView->setSelected(listviewitem_connect_servers, TRUE );
}

void beOptionsWidget::updateCurrentServer()
{
     KviIrcNetwork * ircnet = g_pIrcServerDataBase->currentNetwork();
     KviIrcServer * ircserv = \
g_pIrcServerDataBase->currentNetwork()->currentServer();  QString servname = \
ircserv->hostname();  QString netname = ircnet->name();
     textLabelServerValue->setText(netname+" : "+servname);
     update();
}


["beOptionsWidget.h" (text/x-chdr)]

#ifndef BEOPTIONSWIDGET_H
#define BEOPTIONSWDIGET_H

#include <qdialog.h>
#include <qwidget.h>
#include <qwidgetstack.h>
#include <qheader.h>
#include <qmap.h>

class QListViewItem;
class QListView;
class QLabel;
class QLineEdit;
class QCheckBox;
class QPushButton;

class KviIrcServerDataBase;

class beOptionsWidget : public QDialog
{
    Q_OBJECT
public:
	beOptionsWidget(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
	~beOptionsWidget();

	void selectConnectServers();
public slots:
	virtual void changeWidget( QListViewItem * selectedViewItem );
// 	virtual void updateCurrentServer(KviIrcServerDataBase * ircdb);
	virtual void updateCurrentServer();
protected slots:
	virtual void languageChange();
	virtual void switchConnectWidgets();

private:
	QMap<QListViewItem*, QWidget*> m_views;
	QListViewItem * listviewitem_connect;
	QListViewItem * listviewitem_connect_servers;
	QListViewItem * listviewitem_connect_options;
	QListViewItem * listviewitem_connect_localinfo;
	QListViewItem * listviewitem_irc;
	QListViewItem * listviewitem_irc_options;
	QListViewItem * listviewitem_irc_highlight;
	QListViewItem * listviewitem_irc_messages;
	QListViewItem * listviewitem_irc_catcher;
	QListViewItem * listviewitem_irc_logging;
	QListViewItem * listviewitem_irc_flood;
	QListViewItem * listviewitem_sounds;
	QListViewItem * listviewitem_sounds_requests;
	QListViewItem * listviewitem_sounds_agents;
	QListViewItem * listviewitem_mouse;
	QListViewItem * listviewitem_mouse_dragdrop;
	QListViewItem * listviewitem_dcc;
	QListViewItem * listviewitem_dcc_options;
	QListViewItem * listviewitem_dcc_folders;
	QListViewItem * listviewitem_dcc_ignore;
	QListViewItem * listviewitem_dcc_fserve;
	QListViewItem * listviewitem_dcc_server;
	QListViewItem * listviewitem_display;
	QListViewItem * listviewitem_display_options;
	QListViewItem * listviewitem_other;
	QListViewItem * listviewitem_other_lock;

	
	// Connect Page
	QLabel* textLabelFullName;
	QLineEdit* lineEditFullName;
	QLabel* textLabelEmail;
	QLineEdit* lineEditEmail;
	QLabel* textLabelNickname;
	QLineEdit* lineEditNickname;
	QLabel* textLabelAlternativeNick;
	QLineEdit* lineEditAlternativeNick;
	QCheckBox* checkBoxInvisibleMode;
	QLabel* textLabelServer;
	QLabel* textLabelServerValue;
	QCheckBox* checkBoxNewServer;
	QPushButton* pushButtonConnectToServer;
	QPushButton* pushButtonNewServer;
	
	QWidgetStack* widgetStack;
	QWidget* WStackPage_connect;
	QWidget* WStackPage_cservers;
	QWidget* WStackPage_coptions;
// 	QLabel* textLabel2;
	QLabel* textLabel3;
	QLabel* textLabel4;
	QListView* listView;

};

#endif


>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic