Element über anderem anordnen
-
Hallo,
ich habe im Designer ein Fenster erstellt, welches verschiedene Widgets nutzt. Diese sind u.a. im Tabellenlayout angeordnet. Nun möchte ich auf Knopfdruck eine Textbox wahlweise entweder über der einen Line bzw. der anderen Mittig ausrichten. Wie könnte man das am elegantesten Lösen? Hier eine Skizze:
-------- -------- I I I I I I I I I I I I
bzw.
-------- -------- I I I I I I I I I I I I
Die Elemente sind je in anderen Layouts. Also die Lines in einem, und die Textbox in einem anderen.
-
Kann man irgendwie von einem Widget im Code die Absolute x Position setzten, dann hätte ich eine Idee. Also
widget->setX(100)
geht so was?
-
#include <QtGui> class MyWid : public QWidget { Q_OBJECT public: MyWid(QWidget * parent = 0, Qt::WindowFlags f = 0) : QWidget(parent,f) { grid = new QGridLayout(this); pb1 = new QPushButton(this); pb2 = new QPushButton(this); lab = new QLabel("Tester",this); lab->hide(); QStringList sl(QString("A,B,C,D,E,F,G,H").split(",")); int row = 2; // starte ab row 2, lasse 1 leer int col = 1; foreach (QString s, sl) { grid->addWidget(new QLabel(s),row,col++); // adde labels ab Zeile 1 if (col == 3) { col = 1; ++row; } } ++ row; pb1->setText("Drueck mich"); pb2->setText("Drueck mich"); grid->addWidget(pb1, row ,1); grid->addWidget(pb2, row ,2); connect(pb1, SIGNAL(clicked()), SLOT(test1())); connect(pb2, SIGNAL(clicked()), SLOT(test2())); setLayout(grid); } public slots: void test1() { lab->show(); grid->addWidget(lab,1,1); // beim re-adden wirds an der anderen Stelle automatisch entfernt } void test2() { lab->show(); grid->addWidget(lab,1,2); // beim re-adden wirds an der anderen Stelle automatisch entfernt } private: QGridLayout * grid; QPushButton * pb1; QPushButton * pb2; QLabel * lab; };
-
Die Variante, fuer die Du am wenigsten Code brauchst, ist vermutlich die, fuer das obere Widget zwei Widgets anzulegen und die mit show()/hide() bzw. setVisible(bool) ein- bzw. auszublenden.