QGroupBox + mousePress

Alles rund um die Programmierung mit Qt
Antworten
ole
Beiträge: 15
Registriert: 22. Dezember 2009 11:21

QGroupBox + mousePress

Beitrag von ole »

Hallo,

Mal wieder sitze ich vor einem Problem, bei dem ich nicht weiter weiß.
Ich arbeite mit Qt4.5.1 und möchte eine QGroupBox mit einem Label drin. Das funktioniert, nur bekomme ich kein "mousePressEvent". Weiß jemand wieso und was ich tun muss, damit die GroupBox ein solches event empfangen kann?

Code: Alles auswählen

class QtDragItem : public QWidget
{
Q_OBJECT

public:
	QtDragItem(const QString &text, QWidget *parent = 0);

protected:
	virtual void mousePressEvent(QMouseEvent *event);

private:
	QHBoxLayout *	m_layout;
	QHBoxLayout *	m_innerLayout;
	QGroupBox *	m_group;
	QLabel *		m_lblInfo;
};

QtDragItem::QtDragItem(const QString &text, QWidget *parent)
: QWidget(parent)
{
	// create layout
	m_layout = new QHBoxLayout(this);
	m_layout->setSpacing(0);
	m_layout->setContentsMargins(0,0,0,0);

        // create groupbox
	m_group = new QGroupBox(text);

        // the inner layout for the groubox
	m_innerLayout = new QHBoxLayout(m_group);
	m_innerLayout->setSpacing(0);
	m_innerLayout->setContentsMargins(6,8,6,6);
	m_group->setAlignment(Qt::AlignHCenter);
	m_group->setFocusPolicy(Qt::ClickFocus);

	// the info label
	m_lblInfo = new QLabel(text, this);
	m_innerLayout->addWidget(m_lblInfo);
	m_group->setLayout(m_innerLayout);
	m_layout->addWidget(m_group);
}


void QtDragItem::mousePressEvent(QMouseEvent *event)
{
	event->accept();
}
Vielen Dank!
Zuletzt geändert von ole am 11. Januar 2010 18:19, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

1. Code formatieren
2. In deiner QGroupBox fängst du überhaupt kein mousePressEvent ab.
3. Woher weist du, daß du kein solches Event bekommst?
ole
Beiträge: 15
Registriert: 22. Dezember 2009 11:21

Beitrag von ole »

1. erledigt.
2. Ja, dass stimmt, ich will einfach das Click event auf mein Objekt "QtDragItem".
3. Ich habe ein Breakpoint in die "mousePressEvent(QMouseEvent *event)" gesetzt. Vorher war in der Klasse nur ein Label, da funktionierte alles tadellos.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Könnte es sein, daß deine Widgets das QtDragItem komplett ausfüllen und du somit nicht auf das QtDragItem drückst, sondern die darin enthaltenen Widgets?

In diesem Fall must du das mousePressEvent aller darin enthaltenen Widgets abfangen. Und zwar mit dem QObject::eventFilter
ole
Beiträge: 15
Registriert: 22. Dezember 2009 11:21

Beitrag von ole »

Ja, die Widgets füllen das QtDragItem komplett aus. So möchte ich das ja auch. Aber geben die Childwidgets nicht automatisch das MousePressEvent weiter an den parent?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nein
ole
Beiträge: 15
Registriert: 22. Dezember 2009 11:21

Beitrag von ole »

Okay, dankeschön!
Antworten