ich stell mich grad mal wieder zu doof an und bitte daher um eure Hilfe:
Ich habe ein TableWidget erstellt, in dem ich in der letzten Spalte ComboBoxen einfüge. Diese ComobBoxen sind für die Farbauswahl. Da beim Klick darauf immer wieder das gleiche Ereignis ausgelöst wird, und ich die Zeile benötige, habe ich mir gedacht das ganze per SignalMapper zu machen (ist das erste mal, dass ich damit arbeite)
Hier mein Code:
HEADER:
Code: Alles auswählen
private slots:
void cmbColor_changed(const QString &arg1);
Code: Alles auswählen
void Options::showDialog()
{
widget = new QWidget(this);
QPushButton *btnok = new QPushButton(widget);
btnok->setText("OK");
btnok->setGeometry(110, 210, 70, 25);
btnok->show();
connect(btnok, SIGNAL(clicked()), this, SLOT(btnok_clicked()));
QPushButton *btncancel = new QPushButton(widget);
btncancel->setText("Abbrechen");
btncancel->setGeometry(20, 210, 70, 25);
btncancel->show();
connect(btncancel, SIGNAL(clicked()), this, SLOT(btncancel_clicked()));
TblWid = new QTableWidget(1, 3, widget);
QStringList header;
header << "Bezeichnung" << "Abk" << "Farbe";
TblWid->setHorizontalHeaderLabels(header);
TblWid->setColumnWidth(0, 100);
TblWid->setColumnWidth(1, 30);
TblWid->setColumnWidth(2, 150);
TblWid->verticalHeader()->hide();
TblWid->verticalHeader()->setDefaultSectionSize(25);
TblWid->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
TblWid->setShowGrid(false);
TblWid->resize(300,200);
TblWid->setFixedSize(TblWid->size());
widget->resize(300,250);
widget->setFixedSize(widget->size());
QSignalMapper *SigMap = new QSignalMapper(this);
for(int i = 0; i <= 10; ++i)
{
QComboBox *cmbColor = new QComboBox;
const QStringList colorNames = QColor::colorNames();
int index = 0;
foreach (const QString &colorName, colorNames)
{
const QColor color(colorName);
cmbColor->addItem(colorName, color);
const QModelIndex idx = cmbColor->model()->index(index++, 0);
cmbColor->model()->setData(idx, color, Qt::BackgroundColorRole);
}
connect(cmbColor, SIGNAL(currentIndexChanged(const QString)), this, SLOT(map()));
SigMap->setMapping(cmbColor, i);
TblWid->setCellWidget(i, 2, cmbColor);
}
connect(SigMap, SIGNAL(mapped(const QString)), TblWid, SLOT(cmbColor_changed(const QString)));
}
void Options::cmbColor_changed(const QString &arg1)
{
QComboBox* cmbColor = dynamic_cast<QComboBox*>(sender());
}
Ich habe schon alle möglichen Seiten abgesucht, um dem Näher zu kommen. aber ich finds nicht
Wie immer schon mal im voraus vielen Dank für eure Hilfe.
Mfg
Fenriswolf