переопределение метода qcombobox setText

143
07 марта 2019, 21:20

Переопределил стандартный view у QComboBox по этому примеру:

// создаем и настраиваем модель
QStandardItemModel *model = new QStandardItemModel;
model->setItem(0, 0, new QStandardItem("111"));
model->setItem(0, 1, new QStandardItem("Name 1"));
model->setItem(1, 0, new QStandardItem("222"));
model->setItem(1, 1, new QStandardItem("Name 2"));
// создаем и настраиваем view
QTableView *coilView = new QTableView(this);
coilView->setSelectionBehavior(QAbstractItemView::SelectRows);
coilView->horizontalHeader()->setStretchLastSection(true);
coilView->verticalHeader()->setStretchLastSection(true);
coilView->verticalHeader()->hide();
coilView->horizontalHeader()->hide();
coilView->setColumnWidth(0, 50);
ui->comboBox->setView(coilView);
ui->comboBox->setModel(model); 
// присоединяю слот для обработки textChanged
connect(ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(textChanged(int)));

В результате в выпадающем списке получаю следующее:

По умолчанию значение в комбобоксе устанавливается по первому столбцу (т.е. по коду). А мне нужно сделать так, чтоб в свёрнутом комбобоксе отображалось имя, а не код.

Я пробовал сделать через сигнал currentIndexChanged(int index):

void MainWindow::textChanged(int index)
{
    QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->comboBox->model());
    QString name = model->item(index, 1)->text();
    QLineEdit *line = ui->comboBox->lineEdit();
    qDebug() << name;    // ОК! в выводе приложения вижу корректное имя
    line->setText(name); // и тут программа падает....
}

Как правильно изменить строку, которая записывается в LineEdit?

Answer 1
ui->comboBox->setModelColumn(1);

см. QComboBox::modelColumn

READ ALSO
could not initialize proxy - no Session REST запрос на Update

could not initialize proxy - no Session REST запрос на Update

Суть проблеми в том что у меня есть две модели, при одной модели Edit работаеш хорошо но когда добавил вторую модель с таким же функционалом...

170
Как лучше сделать смену разметок на одном экране?

Как лучше сделать смену разметок на одном экране?

На основном экране есть "шапка" с навигацией, которая будет одинаковой (headxml)

125
Как узнать id view в AdapterView.OnItemClickListener

Как узнать id view в AdapterView.OnItemClickListener

У меня есть несколько AutoCompleteTextViewИ класс в котором они находятся реализует интерфейс AdapterView

123
Проблема при чтении из XML файла. Java, Sax parser

Проблема при чтении из XML файла. Java, Sax parser

У меня есть файл в 175 мб, и где-то в середине все ломается ( то есть до этого понятное дело нормально проходит)

151