Witajcie,
to moje ostatnie pytanie z serii Qt w bieżącym projekcie.
Aczkolwiek wygląda ono następująco
W poniższym kodzie przesyłam sobie sygnał z QComboBox do mojej funkcji.
for(int i=0;i<ui->tableWidget_2->columnCount();i++)
{
QComboBox *comboBox = new QComboBox;
comboBox->addItem(QString::fromStdString("*all"));
for(int j=0;j<ui->tableWidget->rowCount();j++)
{
bool tak=0;
for(int k=0;k<comboBox->count();k++)
if(comboBox->itemText(k)==ui->tableWidget->item(j,i)->text())
tak=1;
if(tak==0)
comboBox->addItem(ui->tableWidget->item(j,i)->text());
}
ui->tableWidget_2->setCellWidget(0,i,comboBox);
connect(comboBox, SIGNAL(currentIndexChanged(int)),
this, SLOT(Szukamy(int)));
}
Dzięki czemu mam informację o tym jaki zostaje wybrany index w QComboBox.
rezultat jest następujący.
Aczkolwiek symulacje wyszukiwania zaprogramowałem na sztywno.
Ponieważ nie wiem z jakiej kolumny !ComboBox został użyty.
oto kod
void Elementy::Szukamy(int)
{
QComboBox* combo=(QComboBox*)ui->tableWidget_2->cellWidget(0, 0);
combo->currentIndex();
for(int i=0;i<ui->tableWidget->rowCount();i++)
ui->tableWidget->showRow(i);
if(combo->itemText(combo->currentIndex()).toStdString()!="*all")
{
for(int i=0;i<ui->tableWidget->rowCount();i++)
{
if(ui->tableWidget->item(i,0)->text().toStdString()!=combo->itemText(combo->currentIndex()).toStdString())
ui->tableWidget->hideRow(i);
}
}
}
I teraz cały sekret Tkwi w tym jak zrobić by informacja z tym przesyłanym sygnałem zawierała również informacje z której kolumny został wywołany ?