Ich habe ein Gui mit einem Index indem sich mehrere Links befinden und einer GroupBox, deren Inhalt sich je nachdem welchen Link man angeklickt hat ändern soll.
Mein Problem ist nun, wie habe ich nachträglich Einfluss auf die GroupBox??
Anfangs wird die GroupBox im Konstruktor des Fensters erstellt und mit einem Element belegt. Wenn man nun auf einen Link im Index klickt, so wird abgefragt welcher Link geklickt wurde und dann sollen abhängig vom jeweiligen Link Elemente in der GroupBox erscheinen.
Hier mein bisheriger Code:
Window.h
Code: Alles auswählen
//MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QObject>
#include <QWidget>
#include <QCloseEvent>
#include <QMessageBox>
#include <QGroupBox>
#include <QLabel>
class MainWindow : public QWidget
{
Q_OBJECT
private:
QGroupBox *gb_index, *gb_details;
QLabel *link1, *start, *linkclicked;
public:
MainWindow();
~MainWindow();
void closeEvent(QCloseEvent *event);
void DisplayDetails(QString Link);
public slots:
void LinkClicked(const QString &Link);
};
#endifCode: Alles auswählen
//MainWindow.cpp
#include "MainWindow.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---Konstruktor---
MainWindow::MainWindow()
{
gb_index = new QGroupBox("Index", this);
gb_index->setGeometry(5, 50, 200, 500);
link1 = new QLabel("<a href=\"index_link1\">Link 1</a>", gb_index);
link1->setGeometry(10, 15, 100, 30);
gb_details = new QGroupBox(this);
gb_details->setGeometry(220, 57, 670, 493);
start = new QLabel("Dieser Text erscheint beim Programmstart", gb_details);
start->setGeometry(15, 15, 80, 30);
connect(link1, SIGNAL(linkActivated(const QString&)), this, SLOT(LinkClicked(const QString&)));
setMinimumWidth(900);
setMinimumHeight(560);
setMaximumWidth(900);
setMaximumHeight(560);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---Detruktor---
MainWindow::~MainWindow()
{
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---closeEvent---
void MainWindow::closeEvent(QCloseEvent *event)
{
QMessageBox *msgbox_event_close;
msgbox_event_close = new QMessageBox(this);
msgbox_event_close->setText("Sind sie sicher, dass sie das Programm beenden wollen?");
msgbox_event_close->addButton("Beenden", QMessageBox::YesRole);
msgbox_event_close->addButton("Abbrechen", QMessageBox::NoRole);
if(msgbox_event_close->exec() == 1)
event->ignore();
return;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---LinkClicked---
void MainWindow::LinkClicked(const QString &Link)
{
if(Link.left(5) == "index")
this->DisplayDetails(Link);
return;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//---DisplayDetails---
void MainWindow::DisplayDetails(QString Link)
{
if(!Link.compare("index_link1"))
{
linkclicked = new QLabel("Dieser Text erscheint beim Klicken auf den Link Nr. 1", gb_details);
linkclicked->setGeometry(15,15,80,30);
this->updateGeometry();
}
}Kann mir da jemand weiterhelfen??
Viele Grüße
Gapa