Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: barm12345 от Ноябрь 27, 2023, 15:10



Название: QComboTableItem в Qt5
Отправлено: barm12345 от Ноябрь 27, 2023, 15:10
Добрый день!

Не получается правильно реализовать следующую конструкцию в Qt5:

Код Qt3:

std::set< std::string > Enum; //Допустимые значения

QTable * Table = MyTable;
QTableItem *Value_Cell;

QStringList *ComboBoxList = new QStringList();
    std::set< std::string >::iterator iter;
    iter = mydata.Enum.begin();
    while(iter != mydata.Enum.end() ) ComboBoxList->append(*iter++ );
    QComboTableItem *CBValue_Cell;
    CBValue_Cell = new QComboTableItem(Table, *ComboBoxList, false);
    CBValue_Cell->setCurrentItem(MyValue );
    Value_Cell = CBValue_Cell; - этот момент интересует как сделать...

  Table->insertRows(Table->numRows() );
  Table->setText(Table->numRows()-1, 0, текст в 0 столбце );
  Table->setItem(Table->numRows()-1, 1, Value_Cell - значение в 1 столбце);

В таблице 0 столбец - параметр, 1 столбец - его значение, которое может быть или string или ComboBox,
точно указать, в какой ячейке что - не могу, параметры меняются.

Пробую через setCellWidget :
QTableWidgetItem *Value_Cell;
QComboBox* ValueBox;
QStringList ComboBoxList;
Value_Box = new QComboBox(Table);
Value_Box->addItems(ComboBoxList);
ValueBox->setCurrentText(MyValue);
Table->setCellWidget(Table->rowCount()-1,1,Value_Box);

Table->insertRow(Table->rowCount());
Table->setItem(Table->rowCount()-1, 1, Value_Cell);

ComboBox вставляется со сдвигом вниз, не в ту ячейку


Название: Re: QComboTableItem в Qt5
Отправлено: DarkHobbit от Декабрь 01, 2023, 08:44
Во-первых, для кода есть отдельный тег.
Во-вторых,
ComboBox вставляется со сдвигом вниз, не в ту ячейку
По приведённым фрагментам невозможно понять, где что вставляется. Судя по всему, последние 2 строки из другого места.


Название: Re: QComboTableItem в Qt5
Отправлено: kambala от Декабрь 04, 2023, 09:57
кажется, проблема в том, что ты пытаешься каждый раз засунуть один и тот же объект Value_Box в каждую ячейку, а надо для каждой ячейки создавать новый объект через new QComboBox