Записи в порядке с cb->setCurrentIndex(1);:
< img alt="cb->setCurrentIndex(1);" src="https://i.sstatic.net/KYYgn1Gy.png" />
Записи сдвигаются на две строки вниз с помощью cb->setCurrentIndex(11);:

// main.cpp
#include "mainwindow.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
// mainwindow.h
#include
#include "comboboxwithremovebutton.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
ComboBoxWithRemoveButton* cb;
QWidget *window;
};
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
cb = new ComboBoxWithRemoveButton(this);
QHBoxLayout *hlayout = new QHBoxLayout;
hlayout->addWidget(cb);
window = new QWidget(this);
window->setLayout(hlayout);
setCentralWidget(window);
cb->setMinimumSize(310, 28);
cb->addItems({"1111", "2222", "3333", "4444", "5555", "6666", "7777", "8888", "9999", "0000", "1111", "2222", "3333"});
cb->setCurrentIndex(11);
}
MainWindow::~MainWindow()
{
delete ui;
}
// comboboxwithremovebutton.h
#ifndef COMBOBOXWITHREMOVEBUTTON_H
#define COMBOBOXWITHREMOVEBUTTON_H
#include
#include
#include
#include
class ComboBoxWithRemoveButton;
class ComboBoxWidget : public QWidget
{
Q_OBJECT
public:
ComboBoxWidget(QString text, ComboBoxWithRemoveButton *cb, QWidget* parent = 0);
public:
QHBoxLayout *horizontalLayout;
QLabel *label;
};
class ComboBoxWithRemoveButton : public QComboBox
{
Q_OBJECT
public:
ComboBoxWithRemoveButton(QWidget *parent = 0);
void addItems(const QStringList &texts);
private:
QListWidget *listWidget;
};
#endif // COMBOBOXWITHREMOVEBUTTON_H
// comboboxwithremovebutton.cpp
#include "comboboxwithremovebutton.h"
#include
#include
ComboBoxWithRemoveButton::ComboBoxWithRemoveButton(QWidget* parent) : QComboBox(parent)
{
listWidget = new QListWidget(this);
setModel(listWidget->model());
setView(listWidget);
}
void ComboBoxWithRemoveButton::addItems(const QStringList &texts)
{
for(const QString& e : texts) {
QListWidgetItem *listWidgetItem = new QListWidgetItem(listWidget);
listWidgetItem->setToolTip(e);
ComboBoxWidget *comboBoxWidget = new ComboBoxWidget(e, this);
listWidgetItem->setSizeHint(comboBoxWidget->sizeHint());
listWidget->addItem(listWidgetItem);
listWidget->setItemWidget(listWidgetItem, comboBoxWidget);
view()->setCurrentIndex(model()->index(currentIndex(), 0));
}
}
ComboBoxWidget::ComboBoxWidget(QString text, ComboBoxWithRemoveButton *cb, QWidget* parent) : QWidget(parent)
{
horizontalLayout = new QHBoxLayout();
label = new QLabel(text);
horizontalLayout->addWidget(label);
setLayout(horizontalLayout);
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... reselected