connect geht nicht

Alles rund um die Programmierung mit Qt
Antworten
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

connect geht nicht

Beitrag 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]
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

Beitrag 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();
}



upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Geht nicht, ist keine Fehlermeldung. Und dein Code ist zu lang um irgendwelche Fehler zu suchen...
Antworten