Seite 1 von 1
QFrame austauschen
Verfasst: 1. Juni 2006 12:27
von the_immortal
Ich möchte eine Art Tabs realisieren. Das heisst ich möchte per Event ein QFrame löschen / ausbleden und ein anderes an selber Stelle sichtbar machen.
Ich habe versucht das Frame mit der isVisible() Methode des QWidget unsichtbar zu machen, jedoch vermute ich dass man das QFrame dann noch neu zeichnen müsste, weiss jedoch nicht wie

!
Verfasst: 1. Juni 2006 12:31
von macman
Nimm QStackedWidget, für sowas ist es da.
Verfasst: 1. Juni 2006 13:23
von the_immortal
macman hat geschrieben:Nimm QStackedWidget, für sowas ist es da.
Ok, ich werde es mal versuchen, scheint genau das zu sein, was ich brauche.
Eine weitere Frage:
Ist es möglich in einer Klasse, welche vom QFrame erbt ein QPushButton zu erstellen, welcher die Klasse in welcher er sich befindet als Argument übergeben wird?
Wenn ich es wie folgt mache und parent übergebe ist der Button dann fix und kann nicht gedrückt werden:
Code: Alles auswählen
EditorFrame::EditorFrame(QWidget *parent) : QFrame(parent)
{
setFrameShape(QFrame::StyledPanel);
setFrameShadow(QFrame::Raised);
pushButton = new QPushButton(parent);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(20, 10, 75, 24));
pushButton->setText("on the laksd");
}
hat das was damit zu tun das es im constructer ist?

Verfasst: 1. Juni 2006 15:57
von the_immortal
Ich habe dem QStackedWidget jetzt 2 Widgets hinzugefügt und kann auch welchseln jedoch über den Slot funktioniert es wiefolgt nicht:
Code: Alles auswählen
QObject::connect(btn1, SIGNAL(clicked()), mainFrame, SLOT(setCurrentIndex(1)));
ob ich jetzt 1 oder 0 eintrage, das Widget ändert nicht!

Verfasst: 1. Juni 2006 16:18
von Esleborn
du kannst slots nicht so argumente übergeben.
Verfasst: 1. Juni 2006 16:36
von the_immortal
Esleborn hat geschrieben:du kannst slots nicht so argumente übergeben.
besteht die Möglichkeit eine Klasse zu schaffen, welche vom QPushButton erbt und bei einem Click ein eigenes Signal ausgibt mit einem int?
Verfasst: 1. Juni 2006 18:35
von the_immortal
Mit Hilfe von Esleborn habe ich nun folgendes erstellt:
TabButton.h
Code: Alles auswählen
#include <QPushButton>
class TabButton : public QPushButton
{
Q_OBJECT
public:
TabButton(QWidget *parent=0, int nbr=0);
signals:
void clicked(int);
private slots:
void Clicked();
private:
int intNbr;
};
TabButton.cpp
Code: Alles auswählen
#include "TabButton.h"
TabButton::TabButton(QWidget *parent, int nbr) : QPushButton(parent)
{
intNbr = nbr;
QObject::connect(this, SIGNAL(clicked(bool)), this, SLOT(Clicked()));
}
void Clicked()
{
emit clicked(intNbr);
}
so kann dem Button ein int übergeben werden, der dann beim conntecten auf das QStackedWidget verwendet werden kann.
Leider scheint noch ein Fehler im Code enthalten zu sein, denn ich erhalte die Message
Code: Alles auswählen
TabButton.cpp:21: error: `intNbr' undeclared (first use this function)
Verfasst: 2. Juni 2006 10:19
von Esleborn
Verfasst: 2. Juni 2006 10:31
von the_immortal
Esleborn hat geschrieben:
sollte vllt besser tun
Hmmm... den Fehler habe ich gestern auch noch entdeckt und auch verbessert, hat jedoch nicht viel geholfen, da ich weitere Fehlermeldungen erhielt.
Vorhin habe ich die Project und Make Datei gelöscht und neu erstellt & dann kompiliert UND ES FUNKTIONIERT

jepeee!!