?
Ich wollte sowas wie einen IconTab machen. Nun habe ich aber zwei Probleme! Der erste ist etwas wichtiger...
Ich habe eine QListWidget in das ich Icons und Text packe. Dann habe ich eine Map welche die Widgets zum zugehörigen List-Item speichert.
Aber wenn ich jetzt das Programm so durchlaufen lasse, habe ich das Problem, dass die QLabel in einem seperaten fenster aufpoppen anstatt sich wie für ein Tab üblich in das Layout zu integrieren.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "ITab.h"
QIconTab::QIconTab(QWidget *parent) : QWidget(parent)
{
QGroupBox *mainBox = new QGroupBox(this);
QHBoxLayout *mainlayout = new QHBoxLayout;
IconList = new QListWidget;
activeWidget = new QWidget(this);
WidgetMap = new QMap<QListWidgetItem, QWidget*>;
QIconTab::Connector();
mainlayout->addWidget(IconList);
mainlayout->addWidget(activeWidget);
mainBox->setLayout(mainlayout);
//ab hier weg
QLabel *l1 = new QLabel("hallo");
QLabel *l2 = new QLabel("hallo duda");
addItem("/opt/kde/share/icons/default.kde/128x128/apps/baghira_blue.png", "Baghira", l1);
addItem("/opt/kde/share/icons/default.kde/128x128/apps/background.png", "Background", l2);
}
void QIconTab::addItem(QString pixmap, QString text, QWidget *child)
{
QIcon icon(*(new QPixmap(pixmap) ) );
QListWidgetItem *LWItem = new QListWidgetItem(icon, text);
IconList->addItem(LWItem); //adding items to list
WidgetMap->insert(*LWItem, child); //builing a map for handling widgets in a tab
}
void QIconTab::Connector()
{
QObject::connect(IconList, SIGNAL(itemPressed(QListWidgetItem*) ), this, SLOT(showWidget(QListWidgetItem*) ) );
}
void QIconTab::hideUnselected()
{
QList<QWidget*> *widgetList = new QList<QWidget*>;
*widgetList = WidgetMap->values();
for(int i = 0; i < widgetList->size(); i++)
{
if(widgetList->at(i) != activeWidget)
widgetList->at(i)->hide();
}
}
//SLOTS
void QIconTab::showWidget(QListWidgetItem *item)
{
activeWidget = WidgetMap->value(*item);
hideUnselected();
activeWidget->show();
}