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