Layoutnamen bzw. -Index ermitteln können
-
boesewicht
- Beiträge: 8
- Registriert: 9. Dezember 2008 18:57
Layoutnamen bzw. -Index ermitteln können
Hallo,
in meinem Dialog-Fenster kann ich die Position bestimmen, in der ich die Mouse geklickt habe. Dieses Dialog-Fenster beinhaltet mehrere Layouts.
Kann mir jemand sagen ob/wie ich herausfinden kann welches Layout (ein Name, IndexNummer, oder so) sich unter dann auf dieser Position befindet, wenn ich diese ermittelt habe?
Somit würde ich gerne jedes Layout gezielt, durch Tastendruck ein-/ausschalten können.
in meinem Dialog-Fenster kann ich die Position bestimmen, in der ich die Mouse geklickt habe. Dieses Dialog-Fenster beinhaltet mehrere Layouts.
Kann mir jemand sagen ob/wie ich herausfinden kann welches Layout (ein Name, IndexNummer, oder so) sich unter dann auf dieser Position befindet, wenn ich diese ermittelt habe?
Somit würde ich gerne jedes Layout gezielt, durch Tastendruck ein-/ausschalten können.
Ich nehme an, du überlädst in deiner Dialog-Klasse "mouseReleaseEvent(QMouseEvent *event)" oder so...in meinem Dialog-Fenster kann ich die Position bestimmen, in der ich die Mouse geklickt habe
Wie wär's mit:Kann mir jemand sagen ob/wie ich herausfinden kann welches Layout (ein Name, IndexNummer, oder so) sich unter dann auf dieser Position befindet, wenn ich diese ermittelt habe?
Code: Alles auswählen
QLayout *layout = qobject_cast<QLayout*>(childAt(event->pos()));
if (layout)
layout->hide(); // disable.. or whatever...
-
boesewicht
- Beiträge: 8
- Registriert: 9. Dezember 2008 18:57
Danke für die Antwort, solarix.
Leider hilft mir das irgendwie nicht weiter. Ich bekomme für "Layout" immer nur NULL zurück. Mein Code schaut nun (grob) so aus:
Leider hilft mir das irgendwie nicht weiter. Ich bekomme für "Layout" immer nur NULL zurück. Mein Code schaut nun (grob) so aus:
Code: Alles auswählen
test::test(QWidget *parent):QDialog(parent)
{
....
PushButton = new QPushButton(tr("&test"));
layout->addWidget(PushButton, 0, 0);
setLayout(layout);
PushButton->installEventFilter(this);
...
}
bool test::eventFilter(QObject *watchedObj, QEvent *event)
{
...
QLayout *findLayoutAtXY;
findLayoutAtXY = qobject_cast<QLayout*>(childAt(mouseEvent->pos()));
if (findLayoutAtXY)
{
// alles super
}
else
{
// nichts gefunden
}
....
}-
boesewicht
- Beiträge: 8
- Registriert: 9. Dezember 2008 18:57
Gut, jetzt habe ich schon ein wenig mehr Übersicht über das ganze. Auf mein Widget kann ich nun zugreifen und es z.B. Ein-/Ausblenden. Wenn ich nun aber gerne dessen gesamtes Layout Ein-/Ausblenden möchte, habe ich versucht das Layout so zu erhalten:
In diesem Fall bekomme ich aber immer nur NULL zurück, obwohl ich es ganz normal im Konstruktor zu einem Layout zusammengefasst habe (welches dann wiederum mit anderen zu einem übergeordneten Layout zusammengefasst wird).
Code: Alles auswählen
QLayout *childLayout = new QHBoxLayout;
childLayout = childWidget->layout();Code: Alles auswählen
todayLayout = new QHBoxLayout;
todayLayout->addWidget(todayLabel);
todayLayout->addWidget(todayLineEdit);
allLayout = new QVBoxLayout;
allLayout->addLayout(todayLayout);Wieso erzeugst du ein neues Layout-Objekt, wenn du dann doch lieber das von childWidget nimmst?boesewicht hat geschrieben:Gut, jetzt habe ich schon ein wenig mehr Übersicht über das ganze. Auf mein Widget kann ich nun zugreifen und es z.B. Ein-/Ausblenden. Wenn ich nun aber gerne dessen gesamtes Layout Ein-/Ausblenden möchte, habe ich versucht das Layout so zu erhalten:Code: Alles auswählen
QLayout *childLayout = new QHBoxLayout; childLayout = childWidget->layout();
-
boesewicht
- Beiträge: 8
- Registriert: 9. Dezember 2008 18:57
Ich dachte ich brauche doch irgend eine Variable, der ich dann die vorhandene Layout-Adresse zuweisen kann? (also sozusagen eine Kopie erstellen)
Wenn die Memberfunktion aufrufe weiß ich ja schließlich nicht welches der Layouts/Widgets gerade gemeint ist.
childWidget ist in diesem Fall ein belibieges Widget, welches ich vorher durch die Position bestimmt habe.
Wenn die Memberfunktion aufrufe weiß ich ja schließlich nicht welches der Layouts/Widgets gerade gemeint ist.
childWidget ist in diesem Fall ein belibieges Widget, welches ich vorher durch die Position bestimmt habe.