Seite 1 von 1

connect geht nicht

Verfasst: 3. Juni 2007 00:56
von defenderLQ
hi

ich habe angefangen QFram mit icon label und die sind eben via slot
anklickbar aber leider wenn ich klich kommt oder nimmt die funktion nicht an.

die Funktion geht mit einem normalen pushbutton oder toolbutton ohne probs.

hier mein:
MessageBar.cpp

Code: Alles auswählen

#include "MessageBar.h"

#include <util/RetroStyleLabel.h>
#include <util/MouseEventFilter.h>


#include <QtGui/QtGui>

MessageBar::MessageBar(QWidget * parent)
	: QFrame(parent) {

	init();
}

MessageBar::~MessageBar() {
}

void MessageBar::init() {
	setFrameShape(QFrame::NoFrame);

	//composeButton
	_composeButton = new RetroStyleLabel(this);
	_composeButton->setPixmaps(
			QPixmap(), //Start
			QPixmap(":/images/messagebar/compose_button.png"), //End
			QPixmap(), //Fill

			QPixmap(), //Start
			QPixmap(":/images/messagebar/compose_button_on.png"), //End
			QPixmap() //Fill
			);
	_composeButton->setMaximumSize(QSize(45, 42));
	connect(_composeButton, SIGNAL(clicked()), SLOT(callButtonClickedSlot()));

	//replyButton
	_replyButton = new RetroStyleLabel(this);
	_replyButton->setPixmaps(
			QPixmap(":/images/messagebar/reply_button.png"), //Start
			QPixmap(), //End
			QPixmap(), //Fill

			QPixmap(":/images/messagebar/reply_button_on.png"), //Start
			QPixmap(), //End
			QPixmap() //Fill
			);
	_replyButton->setMaximumSize(QSize(36, 42));
	_replyButton->setMinimumSize(QSize(36, 42));
	connect(_replyButton, SIGNAL(clicked()), SLOT(hangUpButtonClickedSlot()));
	
	//removeButton
	_removeButton = new RetroStyleLabel(this);
	_removeButton->setPixmaps(
			QPixmap(":/images/messagebar/remove.png"), //Start
			QPixmap(), //End
			QPixmap(), //Fill

			QPixmap(":/images/messagebar/remove_on.png"), //Start
			QPixmap(), //End
			QPixmap() //Fill
			);
	_removeButton->setMaximumSize(QSize(36, 42));
	_removeButton->setMinimumSize(QSize(36, 42));
	//connect(_removeButton, SIGNAL(clicked()), SLOT(logoButtonClickedSlot()));

	//phoneComboBoxContainerLabel
	RetroStyleLabel * phoneComboBoxContainerLabel = new RetroStyleLabel(this);
	phoneComboBoxContainerLabel->setPixmaps(
			QPixmap(), //Start
			QPixmap(), //End
			QPixmap(":/images/chat/bar_fill.png"), //Fill

			QPixmap(), //Start
			QPixmap(), //End
			QPixmap(":/images/chat/bar_fill.png") //Fill
			);


	QGridLayout * layout = new QGridLayout(this);
	layout->setMargin(0);
	layout->setSpacing(0);
	
	layout->addWidget(_composeButton, 0, 0);
	layout->addWidget(_replyButton, 0, 1);
	layout->addWidget(_removeButton, 0, 2);
	layout->addWidget(phoneComboBoxContainerLabel, 0, 3);

}

void MessageBar::setEnabledComposeButton(bool enable) {
	_composeButton->setEnabled(enable);
}

void MessageBar::setEnabledReplyButton(bool enable) {
	_replyButton->setEnabled(enable);
}

void MessageBar::setEnabledRemoveButton(bool enable) {
	_removeButton->setEnabled(enable);
}


void MessageBar::composeButtonClickedSlot() {
	composeButtonClicked();
}

void MessageBar::replyButtonClickedSlot() {
	replyButtonClicked();
}

void MessageBar::removeButtonClickedSlot() {
	removeButtonClicked();
}



MessageBar.h

Code: Alles auswählen

#ifndef MESSAGEBAR_H
#define MESSAGEBAR_H

#include <QtGui/QFrame>

#include <string>

class RetroStyleLabel;

class QString;
class QIcon;

/**
 * Messagebar inside the MessagesDialog.
 *
 *
 * 
 */
class MessageBar : public QFrame {
	Q_OBJECT
public:

	MessageBar(QWidget * parent);

	~MessageBar();

	void setEnabledComposeButton(bool enable);

	void setEnabledReplyButton(bool enable);
	
	void setEnabledRemoveButton(bool enable);



Q_SIGNALS:

	void composeButtonClicked();

	void replyButtonClicked();
	
	void removeButtonClicked();



private Q_SLOTS:

	void composeButtonClickedSlot();

	void replyButtonClickedSlot();
	
	void removeButtonClickedSlot();
	




private:

	void init();

	RetroStyleLabel * _composeButton;

	RetroStyleLabel * _replyButton;
	
	RetroStyleLabel * _removeButton;


};

#endif	//MESSAGEBAR_H
und hier mein MessagesDialog.cpp:

von wo die Connects gemacht werden:

Code: Alles auswählen

#include "MessagesDialog.h"
#include "msgs/ChanMsgDialog.h"
#include "gui/toaster/MessageToaster.h"
#include "MessageBar.h"
#include "util/Widget.h"

#include "rsiface/rsiface.h"
#include <sstream>

#include <QContextMenuEvent>
#include <QMenu>
#include <QCursor>
#include <QPoint>
#include <QMouseEvent>
#include <QPixmap>

/* Images for context menu icons */
#define IMAGE_MESSAGE        ":/images/folder-draft.png"
#define IMAGE_MESSAGEREPLY   ":/images/mail_reply.png"
#define IMAGE_MESSAGEREMOVE  ":/images/mail_delete.png"
#define IMAGE_DOWNLOAD       ":/images/start.png"
#define IMAGE_DOWNLOADALL    ":/images/startall.png"


/** Constructor */
MessagesDialog::MessagesDialog(QWidget *parent)
: MainPage(parent)
{
  /* Invoke the Qt Designer generated object setup routine */
  ui.setupUi(this);


  
  connect(ui.toolButtonnewmsg, SIGNAL(clicked()), this, SLOT(newmessage()));
  //connect(ui.eventsButton, SIGNAL(clicked()), SLOT(eventsButtonClicked()));

  mCurrCertId = "";
  mCurrMsgId  = "";
  
  /* hide the Tree +/- */
  ui.msgList -> setRootIsDecorated( false );
  
  
  
    _rsMessageBar = NULL;
 
    //MessageBar
    _rsMessageBar = new MessageBar(ui.messagebarframe);
    Widget::createLayout(ui.messagebarframe)->addWidget(_rsMessageBar);
  
  	//ComposeButton
	connect(_rsMessageBar, SIGNAL(composeButtonClicked()), SLOT(newmessage()));
	_rsMessageBar->setEnabledComposeButton(true);

	//replyButton
	connect(_rsMessageBar, SIGNAL(replyButtonClicked()), SLOT(replytomessage()));
	_rsMessageBar->setEnabledReplyButton(true);
	
	//removeButton
	connect(_rsMessageBar, SIGNAL(removeButtonClicked()), SLOT(removemessage()));
	_rsMessageBar->setEnabledRemoveButton(true);



  /* Hide platform specific features */
#ifdef Q_WS_WIN

#endif
}

void MessagesDialog::newmessage()
{
    static ChanMsgDialog *createMsgDialog = new ChanMsgDialog(true);

    /* fill it in */
    std::cerr << "MessagesDialog::newmessage()" << std::endl;
    createMsgDialog->newMsg();
    createMsgDialog->show();
}

MessageBar & MessagesDialog::getMessageBar() const {
	return *_rsMessageBar;
}
und die MessagesDialog.h

Code: Alles auswählen

#ifndef _MESSAGESDIALOG_H
#define _MESSAGESDIALOG_H

#include <QFileDialog>

#include "mainpage.h"
#include "ui_MessagesDialog.h"

class MessageBar;
class MessagesDialog : public MainPage 
{
  Q_OBJECT

public:
  /** Default Constructor */
  MessagesDialog(QWidget *parent = 0);
  /** Default Destructor */


 void insertMessages();
 void insertMsgTxtAndFiles();


private slots:

  MessageBar & getMessageBar() const;


  void newmessage();


private:

  
  MessageBar * _rsMessageBar;
  
  /** Qt Designer generated object */
  Ui::MessagesDialog ui;
};

#endif

[/quote]

Verfasst: 3. Juni 2007 20:26
von Christian81
Ein bischen weniger code währe hier sinnvoll - Stichwort 'Testcase'
Des weiteren gibt Qt zur Laufzeit Fehlermeldungen in der Konsole aus, die sollten helfen. Zumal wir solche Probleme hier ja öfters hatten -> Suche hilft ggf. auch.

Verfasst: 9. Juni 2007 01:34
von defenderLQ
hi

nun habe ich den fehler bereinigt aber es geht immer noch nicht wieso...

Code: Alles auswählen

#include "MessageBar.h"

#include <util/RetroStyleLabel.h>
#include <util/MouseEventFilter.h>


#include <QtGui/QtGui>

MessageBar::MessageBar(QWidget * parent)
	: QFrame(parent) {

	init();
}

MessageBar::~MessageBar() {
}

void MessageBar::init() {
	setFrameShape(QFrame::NoFrame);

	//composeButton
	_composeButton = new RetroStyleLabel(this);
	_composeButton->setPixmaps(
			QPixmap(), //Start
			QPixmap(":/images/messagebar/compose_button.png"), //End
			QPixmap(), //Fill

			QPixmap(), //Start
			QPixmap(":/images/messagebar/compose_button_on.png"), //End
			QPixmap() //Fill
			);
	_composeButton->setMaximumSize(QSize(45, 42));
	_composeButton->setToolTip("New Message");
	connect(_composeButton, SIGNAL(clicked()), SLOT(composeButtonClicked()));

	//replyButton
	_replyButton = new RetroStyleLabel(this);
	_replyButton->setPixmaps(
			QPixmap(":/images/messagebar/reply_button.png"), //Start
			QPixmap(), //End
			QPixmap(), //Fill

			QPixmap(":/images/messagebar/reply_button_on.png"), //Start
			QPixmap(), //End
			QPixmap() //Fill
			);
	_replyButton->setMaximumSize(QSize(36, 42));
	_replyButton->setMinimumSize(QSize(36, 42));
	connect(_replyButton, SIGNAL(clicked()), SLOT(replyButtonClickedSlot()));
	
	//removeButton
	_removeButton = new RetroStyleLabel(this);
	_removeButton->setPixmaps(
			QPixmap(":/images/messagebar/remove.png"), //Start
			QPixmap(), //End
			QPixmap(), //Fill

			QPixmap(":/images/messagebar/remove_on.png"), //Start
			QPixmap(), //End
			QPixmap() //Fill
			);
	_removeButton->setMaximumSize(QSize(36, 42));
	_removeButton->setMinimumSize(QSize(36, 42));
	connect(_removeButton, SIGNAL(clicked()), SLOT(removeButtonClickedSlot()));

	//phoneComboBoxContainerLabel
	RetroStyleLabel * phoneComboBoxContainerLabel = new RetroStyleLabel(this);
	phoneComboBoxContainerLabel->setPixmaps(
			QPixmap(), //Start
			QPixmap(), //End
			QPixmap(":/images/chat/bar_fill.png"), //Fill

			QPixmap(), //Start
			QPixmap(), //End
			QPixmap(":/images/chat/bar_fill.png") //Fill
			);


	QGridLayout * layout = new QGridLayout(this);
	layout->setMargin(0);
	layout->setSpacing(0);
	
	layout->addWidget(_composeButton, 0, 0);
	layout->addWidget(_replyButton, 0, 1);
	layout->addWidget(_removeButton, 0, 2);
	layout->addWidget(phoneComboBoxContainerLabel, 0, 3);

}

void MessageBar::setEnabledComposeButton(bool enable) {
	_composeButton->setEnabled(enable);
}

void MessageBar::setEnabledReplyButton(bool enable) {
	_replyButton->setEnabled(enable);
}

void MessageBar::setEnabledRemoveButton(bool enable) {
	_removeButton->setEnabled(enable);
}


void MessageBar::composeButtonClickedSlot() {
	composeButtonClicked();
}

void MessageBar::replyButtonClickedSlot() {
	replyButtonClicked();
}

void MessageBar::removeButtonClickedSlot() {
	removeButtonClicked();
}




Verfasst: 9. Juni 2007 08:15
von upsala
Geht nicht, ist keine Fehlermeldung. Und dein Code ist zu lang um irgendwelche Fehler zu suchen...