[Anfänger] 6x ein identisches Tab in QTabWidget erstellen
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
[Anfänger] 6x ein identisches Tab in QTabWidget erstellen
Hallo,
folgendes Problem:
Ich benötige in 6 Tab Fenstern ein jeweils völlig gleiches Layout bestehend aus Checkboxen, Buttons , Comboboxen u.s.w.
Ich könnte naturlich für jedes Tab Fenster alles immer wieder neu erstellen, aber gibt es eine Möglichkeit, so ein Layout 1 mal zu erstellen
und dann auf 6 Tab Fenster zu übertragen?
Natürlich sollen die einzelnen Objekte in den TAB Fenster unabhängig sein.
Hintergrund ist, ich habe diverse Geräte an einer RS485 hängen, diese sind bis auf die Adresse alle gleich.
Wie kann ich so etwas am vernünftigsten und am einfachsten (Anfänger) erstellen?
Geht das mit einer Klasse und wie ?
Danke an alle
Bang-Johansen
folgendes Problem:
Ich benötige in 6 Tab Fenstern ein jeweils völlig gleiches Layout bestehend aus Checkboxen, Buttons , Comboboxen u.s.w.
Ich könnte naturlich für jedes Tab Fenster alles immer wieder neu erstellen, aber gibt es eine Möglichkeit, so ein Layout 1 mal zu erstellen
und dann auf 6 Tab Fenster zu übertragen?
Natürlich sollen die einzelnen Objekte in den TAB Fenster unabhängig sein.
Hintergrund ist, ich habe diverse Geräte an einer RS485 hängen, diese sind bis auf die Adresse alle gleich.
Wie kann ich so etwas am vernünftigsten und am einfachsten (Anfänger) erstellen?
Geht das mit einer Klasse und wie ?
Danke an alle
Bang-Johansen
-
DBGTMaster
- Beiträge: 190
- Registriert: 19. August 2010 10:00
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Du könntest ein eigenes Widget erstellen, indem du das QWidget ableitest, und auf diesem deine Elemente plazierst.
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo,
Danke für den Tipp.
Das klingt logisch.
Allerdings habe ich soetwas noch nie gemacht.
Daher hätte ich ein paar Fragen:
- muß ich die Event Handler für Maus und Tastatu reimplementieren und wenn warum ?
( so steht es in meinem alten QT3 Buch)
Um die Buttons reinzubekommen, muß ich dann eine Methode erstellen, wo diese erzeugt werden und dann
diese Methode im Konstruktor aufrufen ??
Bang-Johansen
Danke für den Tipp.
Das klingt logisch.
Allerdings habe ich soetwas noch nie gemacht.
Daher hätte ich ein paar Fragen:
- muß ich die Event Handler für Maus und Tastatu reimplementieren und wenn warum ?
( so steht es in meinem alten QT3 Buch)
Um die Buttons reinzubekommen, muß ich dann eine Methode erstellen, wo diese erzeugt werden und dann
diese Methode im Konstruktor aufrufen ??
Bang-Johansen
-
DBGTMaster
- Beiträge: 190
- Registriert: 19. August 2010 10:00
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Nein, du musst nun nicht irgendwie selber die Handlers schreiben..
Hab gerade kein Beispielcode, aber an einem Beispiel von 2 Eingabefelder, welche nebeneinander stehen sollen:
1.) Ich erstelle eine Widget, welche von QWidget abgeleitet wird.
2.) Ich erstelle private member _inputA, inputB
3.) Im Konstruktor plaziere ich die Elemente auf das QWidget (-> this), oder setze ein Layout auf das QWidget.
Hab gerade kein Beispielcode, aber an einem Beispiel von 2 Eingabefelder, welche nebeneinander stehen sollen:
1.) Ich erstelle eine Widget, welche von QWidget abgeleitet wird.
2.) Ich erstelle private member _inputA, inputB
3.) Im Konstruktor plaziere ich die Elemente auf das QWidget (-> this), oder setze ein Layout auf das QWidget.
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo, ich habe mal zum Testen was geschrieben:
test.h
test.cpp
Benutzen tue ich die Klasse dann so:
Dieses Widget wird dann mit addTab in das Tab Fenster eingefügt.
Allerdings erscheint ein kleines zusätzliches extra Fenster, wo der Button drin ist.
Ich denke mal, ich darf das Layout nicht in ein neues QWidget (TestWidget) packen, sondern direkt in das AxisWidget.
Wie mache ich dass ???
(Bitte nicht lachen, mache sowas zum ersten mal
)
Danke
Bang Johansen
test.h
Code: Alles auswählen
class AxisWidget : public QWidget
{
public:
// Konstruktor
AxisWidget ();
// Destruktor
~AxisWidget ();
void NewWidget ();
private:
QPushButton *Button;
QGridLayout *TestLayout;
QWidget *TestWidget;
};
Code: Alles auswählen
AxisWidget::AxisWidget ()
{
NewWidget ();
}
AxisWidget::~AxisWidget ()
{
}
void AxisWidget::NewWidget ()
{
Button = new QPushButton("Test");
TestLayout = new QGridLayout ();
TestLayout->addWidget(Button,0, 0);
TestWidget = new QWidget ();
TestWidget->setLayout (TestLayout);
TestWidget-> show();
}
Code: Alles auswählen
AxisXDeviceWidget = new AxisWidget ();
Allerdings erscheint ein kleines zusätzliches extra Fenster, wo der Button drin ist.
Ich denke mal, ich darf das Layout nicht in ein neues QWidget (TestWidget) packen, sondern direkt in das AxisWidget.
Wie mache ich dass ???
(Bitte nicht lachen, mache sowas zum ersten mal
Danke
Bang Johansen
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo,
da haben wir wohl zur gleichen Zeit geschrieben.
Bang Johansen
da haben wir wohl zur gleichen Zeit geschrieben.
Das mit dem this Operator habe ich mir schon gedacht, ich weiß nur nicht, wo und wie ich den einbauen soll."DBGTMaster"]Nein, du musst nun nicht irgendwie selber die Handlers schreiben..
3.) Im Konstruktor plaziere ich die Elemente auf das QWidget (-> this), oder setze ein Layout auf das QWidget.
Bang Johansen
-
DBGTMaster
- Beiträge: 190
- Registriert: 19. August 2010 10:00
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo,
1.) Du must kein eigenes Widget erstellen (TestWidget), du hast bereits ein Widget erstellt (AxisWidget).
2.) setLayout musst du auf dein AxisWidget setzen.
Ohne getestet zu haben:
1.) Du must kein eigenes Widget erstellen (TestWidget), du hast bereits ein Widget erstellt (AxisWidget).
2.) setLayout musst du auf dein AxisWidget setzen.
Ohne getestet zu haben:
Code: Alles auswählen
AxisWidget::AxisWidget ()
{
Button = new QPushButton("Test");
TestLayout = new QGridLayout ();
TestLayout->addWidget(Button,0, 0);
setLayout (TestLayout);
}-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo,
Danke für Deinen Hinweis.
ich habe es erst mal so gemacht und es funktioniert soweit.
2 Fragen hätte ich allerdings noch:
1. Wenn ich das Programm per Konsole starte, kommt in der selben folgende Meldung:
QWidget::setLayout: Attempting to set QLayout "" on QWidget "", which already has a layout
Ist das nur ein Hinweis oder soll dies eine Fehlermeldung sein ?
Wie würde man das wegbekommen ?
Ich habe mal im Internet gesucht, die dortigen Probleme beziehen sich auf ein Layout in QMainwindow; für diesem Fall
mit QWidget habe ich nichts gefunden, da sich dies bei QMainwindow laut diesen Foren um einen Sonderfall handelt
2. setLayout (TestLayout);
ist mir nicht ganz klar.
Bedeutet dies, daß mit setLayout ein neues Layout direkt der neuen abgeleiteteten Klasse zugeordnet ist ?
Es wird ja so kein Objekt direkt angegeben.
Ist dies so was ähnliches wie der ->this Operator ?
mit freundlichen Grüßen
Bang Johansen
Danke für Deinen Hinweis.
ich habe es erst mal so gemacht und es funktioniert soweit.
2 Fragen hätte ich allerdings noch:
1. Wenn ich das Programm per Konsole starte, kommt in der selben folgende Meldung:
QWidget::setLayout: Attempting to set QLayout "" on QWidget "", which already has a layout
Ist das nur ein Hinweis oder soll dies eine Fehlermeldung sein ?
Wie würde man das wegbekommen ?
Ich habe mal im Internet gesucht, die dortigen Probleme beziehen sich auf ein Layout in QMainwindow; für diesem Fall
mit QWidget habe ich nichts gefunden, da sich dies bei QMainwindow laut diesen Foren um einen Sonderfall handelt
2. setLayout (TestLayout);
ist mir nicht ganz klar.
Bedeutet dies, daß mit setLayout ein neues Layout direkt der neuen abgeleiteteten Klasse zugeordnet ist ?
Es wird ja so kein Objekt direkt angegeben.
Ist dies so was ähnliches wie der ->this Operator ?
mit freundlichen Grüßen
Bang Johansen
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Re: [Anfänger] 6x ein identisches Tab in QTabWidget erstelle
Hallo,
Frage Nr. 1 hat sich erledigt.
Die Ursache war, daß ich noch im alten Testcode noch ein Layout drin hatte, was
dort nichts mehr zu suchen sollte.
Allerdings habe ich eine weitere Frage:
Was muß ich jetzt bei connect ("Sender".... eintragen ?
Im Moment ist es so:
###
neue abgeleitete Klassem mit dem QPushbutton "Button" mit der Bezeichnung "test"
Den Button habe ich mal public gemacht.
Tabfenster = new test ();
##
Ich habe jetzt insgesamt in 6 Fenstern den QPushbutton Button.
Was trage ich jetzt bei "Sender" ein, damit ich auf diesem Tabreiter den zugehörigen Slot auslöse ?
Ein Tabfenster->Button funktioniert nicht, obwohl mir make den -> Operator vorgeschlagen hat.
Fehlermeldung:
deviceconfig.cpp:79:30: error: 'class QWidget' has no member named 'Button'
Suche im netz hat mich bisher noch nicht weitergebracht.
mit freundlichen Grüßen
Bang Johansen
Frage Nr. 1 hat sich erledigt.
Die Ursache war, daß ich noch im alten Testcode noch ein Layout drin hatte, was
dort nichts mehr zu suchen sollte.
Allerdings habe ich eine weitere Frage:
Was muß ich jetzt bei connect ("Sender".... eintragen ?
Im Moment ist es so:
###
neue abgeleitete Klassem mit dem QPushbutton "Button" mit der Bezeichnung "test"
Den Button habe ich mal public gemacht.
Tabfenster = new test ();
##
Ich habe jetzt insgesamt in 6 Fenstern den QPushbutton Button.
Was trage ich jetzt bei "Sender" ein, damit ich auf diesem Tabreiter den zugehörigen Slot auslöse ?
Ein Tabfenster->Button funktioniert nicht, obwohl mir make den -> Operator vorgeschlagen hat.
Fehlermeldung:
deviceconfig.cpp:79:30: error: 'class QWidget' has no member named 'Button'
Suche im netz hat mich bisher noch nicht weitergebracht.
mit freundlichen Grüßen
Bang Johansen