#include // creates 2 identical labels (except for text) and hooks their "linkActivated" and "linkHovered" signals up to // the "toggle" slot of some checkboxes. then embeds one of the labels in a QGraphicsView. // the signals are not emitted for embedded label, but are emitted for regular label int main(int argc, char *argv[]) { QApplication a(argc, argv); const QString text("%1"); QLabel *normalLabel = new QLabel(text.arg("Normal Label")); QLabel *embeddedLabel = new QLabel(text.arg("Embedded Label")); QCheckBox *normalActivatedCB = new QCheckBox("normal label activated"); QCheckBox *normalHoveredCB = new QCheckBox("normal label hover"); QCheckBox *embeddedActivatedCB = new QCheckBox("embedded label activated"); QCheckBox *embeddedHoveredCB = new QCheckBox("embedded label hover"); QObject::connect(normalLabel, SIGNAL(linkActivated(const QString &)), normalActivatedCB, SLOT(toggle())); QObject::connect(normalLabel, SIGNAL(linkHovered(const QString &)), normalHoveredCB, SLOT(toggle())); QObject::connect(embeddedLabel, SIGNAL(linkActivated(const QString &)), embeddedActivatedCB, SLOT(toggle())); QObject::connect(embeddedLabel, SIGNAL(linkHovered(const QString &)), embeddedHoveredCB, SLOT(toggle())); QGraphicsScene *scene = new QGraphicsScene; QGraphicsView *graphicsView = new QGraphicsView(scene); scene->addWidget(embeddedLabel); //a checkbox behaves well when embedded. uncomment this to test //QCheckBox *embeddedCheckBox = new QCheckBox("I'm OK"); //QObject::connect(embeddedCheckBox, SIGNAL(toggled(bool)), embeddedHoveredCB, SLOT(setChecked(bool))); //scene->addWidget(embeddedCheckBox); QWidget w; QGridLayout *gridLayout = new QGridLayout(&w); gridLayout->addWidget(normalLabel, 0, 0, 2, 1); gridLayout->addWidget(normalActivatedCB, 0, 1); gridLayout->addWidget(normalHoveredCB, 1, 1); // mainLayout->addWidget(embeddedLabel, 2, 0, 2, 1); gridLayout->addWidget(graphicsView, 2, 0, 2, 1); gridLayout->addWidget(embeddedActivatedCB, 2, 1); gridLayout->addWidget(embeddedHoveredCB, 3, 1); w.show(); return a.exec(); }