<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://programmingexamples.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=Qt%2FModelView%2FListViewComboBox</id>
		<title>Qt/ModelView/ListViewComboBox - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=Qt%2FModelView%2FListViewComboBox"/>
		<link rel="alternate" type="text/html" href="http://programmingexamples.net/w/index.php?title=Qt/ModelView/ListViewComboBox&amp;action=history"/>
		<updated>2026-04-21T14:41:24Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>http://programmingexamples.net/w/index.php?title=Qt/ModelView/ListViewComboBox&amp;diff=5120&amp;oldid=prev</id>
		<title>Daviddoria: Created page with '==main.cpp== &lt;source lang=&quot;cpp&quot;&gt; #include &lt;QApplication&gt;  #include &quot;form.h&quot;  int main(int argc, char *argv[]) {   QApplication app(argc, argv);   Form form;      form.show();   r…'</title>
		<link rel="alternate" type="text/html" href="http://programmingexamples.net/w/index.php?title=Qt/ModelView/ListViewComboBox&amp;diff=5120&amp;oldid=prev"/>
				<updated>2011-12-21T02:21:10Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;==main.cpp== &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; #include &amp;lt;QApplication&amp;gt;  #include &amp;quot;form.h&amp;quot;  int main(int argc, char *argv[]) {   QApplication app(argc, argv);   Form form;      form.show();   r…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==main.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;form.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  QApplication app(argc, argv);&lt;br /&gt;
  Form form;&lt;br /&gt;
  &lt;br /&gt;
  form.show();&lt;br /&gt;
  return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ComboBoxDelegate.h==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef COMBOBOXDELEGATE_H&lt;br /&gt;
#define COMBOBOXDELEGATE_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QItemDelegate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class QModelIndex;&lt;br /&gt;
class QWidget;&lt;br /&gt;
class QVariant;&lt;br /&gt;
&lt;br /&gt;
class ComboBoxDelegate : public QItemDelegate&lt;br /&gt;
{&lt;br /&gt;
Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
  ComboBoxDelegate(QObject *parent = 0);&lt;br /&gt;
  &lt;br /&gt;
  QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &amp;amp;option, const QModelIndex &amp;amp;index) const;&lt;br /&gt;
  void setEditorData(QWidget *editor, const QModelIndex &amp;amp;index) const;&lt;br /&gt;
  void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &amp;amp;index) const;&lt;br /&gt;
  void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &amp;amp;option, const QModelIndex &amp;amp;index) const;&lt;br /&gt;
  void paint(QPainter *painter, const QStyleOptionViewItem &amp;amp;option, const QModelIndex &amp;amp;index) const;&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
  std::vector&amp;lt;std::string&amp;gt; Items;&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ComboBoxDelegate.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;ComboBoxDelegate.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QComboBox&amp;gt;&lt;br /&gt;
#include &amp;lt;QWidget&amp;gt;&lt;br /&gt;
#include &amp;lt;QModelIndex&amp;gt;&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ComboBoxDelegate::ComboBoxDelegate(QObject *parent)&lt;br /&gt;
:QItemDelegate(parent)&lt;br /&gt;
{&lt;br /&gt;
  Items.push_back(&amp;quot;Test0&amp;quot;);&lt;br /&gt;
  Items.push_back(&amp;quot;Test1&amp;quot;);&lt;br /&gt;
  Items.push_back(&amp;quot;Test2&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &amp;amp;/* option */, const QModelIndex &amp;amp;/* index */) const&lt;br /&gt;
{&lt;br /&gt;
  QComboBox* editor = new QComboBox(parent);&lt;br /&gt;
  for(unsigned int i = 0; i &amp;lt; Items.size(); ++i)&lt;br /&gt;
    {&lt;br /&gt;
    editor-&amp;gt;addItem(Items[i].c_str());&lt;br /&gt;
    }&lt;br /&gt;
  return editor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &amp;amp;index) const&lt;br /&gt;
{&lt;br /&gt;
  QComboBox *comboBox = static_cast&amp;lt;QComboBox*&amp;gt;(editor);&lt;br /&gt;
  int value = index.model()-&amp;gt;data(index, Qt::EditRole).toUInt();&lt;br /&gt;
  comboBox-&amp;gt;setCurrentIndex(value);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &amp;amp;index) const&lt;br /&gt;
{&lt;br /&gt;
  QComboBox *comboBox = static_cast&amp;lt;QComboBox*&amp;gt;(editor);&lt;br /&gt;
  model-&amp;gt;setData(index, comboBox-&amp;gt;currentIndex(), Qt::EditRole);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ComboBoxDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &amp;amp;option, const QModelIndex &amp;amp;/* index */) const&lt;br /&gt;
{&lt;br /&gt;
  editor-&amp;gt;setGeometry(option.rect);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &amp;amp;option, const QModelIndex &amp;amp;index) const&lt;br /&gt;
{&lt;br /&gt;
  QStyleOptionViewItemV4 myOption = option;&lt;br /&gt;
  QString text = Items[index.row()].c_str();&lt;br /&gt;
&lt;br /&gt;
  myOption.text = text;&lt;br /&gt;
&lt;br /&gt;
  QApplication::style()-&amp;gt;drawControl(QStyle::CE_ItemViewItem, &amp;amp;myOption, painter);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==form.h==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef FORM_H&lt;br /&gt;
#define FORM_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;ui_form.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QMainWindow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;ComboBoxDelegate.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class QStringListModel;&lt;br /&gt;
&lt;br /&gt;
class Form : public QMainWindow, private Ui::MainWindow&lt;br /&gt;
{&lt;br /&gt;
  Q_OBJECT&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
  Form(QWidget *parent = 0);&lt;br /&gt;
&lt;br /&gt;
public slots:&lt;br /&gt;
  void on_btnAdd_clicked();&lt;br /&gt;
  void slot_modelChanged(const QModelIndex  &amp;amp;topLeft, const QModelIndex  &amp;amp;bottomRight);&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
  QStringListModel* Model;&lt;br /&gt;
  ComboBoxDelegate Delegate;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==form.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;form.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Form::Form(QWidget *parent)&lt;br /&gt;
    : QMainWindow(parent)&lt;br /&gt;
{&lt;br /&gt;
  setupUi(this);&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;Model = new QStringListModel;&lt;br /&gt;
  this-&amp;gt;listView-&amp;gt;setModel(this-&amp;gt;Model);&lt;br /&gt;
  connect(this-&amp;gt;Model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(slot_modelChanged(QModelIndex,QModelIndex)));&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;listView-&amp;gt;setItemDelegate(&amp;amp;this-&amp;gt;Delegate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Form::on_btnAdd_clicked()&lt;br /&gt;
{&lt;br /&gt;
  this-&amp;gt;Model-&amp;gt;insertRows(this-&amp;gt;Model-&amp;gt;rowCount(), 1);&lt;br /&gt;
  this-&amp;gt;Model-&amp;gt;setData(this-&amp;gt;Model-&amp;gt;index(this-&amp;gt;Model-&amp;gt;rowCount()-1), &amp;quot;new line &amp;quot; + QString::number(this-&amp;gt;Model-&amp;gt;rowCount()));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Form::slot_modelChanged(const QModelIndex &amp;amp;topLeft, const QModelIndex  &amp;amp;bottomRight)&lt;br /&gt;
{&lt;br /&gt;
  std::cout &amp;lt;&amp;lt; &amp;quot;Model changed.&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
&lt;br /&gt;
  // Make the combo boxes always displayed.&lt;br /&gt;
  for ( int i = 0; i &amp;lt; this-&amp;gt;Model-&amp;gt;rowCount(); ++i )&lt;br /&gt;
    {&lt;br /&gt;
    this-&amp;gt;listView-&amp;gt;openPersistentEditor( this-&amp;gt;Model-&amp;gt;index(i) );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==form.ui==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ui version=&amp;quot;4.0&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;class&amp;gt;MainWindow&amp;lt;/class&amp;gt;&lt;br /&gt;
 &amp;lt;widget class=&amp;quot;QMainWindow&amp;quot; name=&amp;quot;MainWindow&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;geometry&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;rect&amp;gt;&lt;br /&gt;
    &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
    &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;232&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;489&amp;lt;/height&amp;gt;&lt;br /&gt;
   &amp;lt;/rect&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;windowTitle&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;string&amp;gt;MainWindow&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;widget class=&amp;quot;QWidget&amp;quot; name=&amp;quot;centralwidget&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;layout class=&amp;quot;QVBoxLayout&amp;quot; name=&amp;quot;verticalLayout&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
     &amp;lt;widget class=&amp;quot;QListView&amp;quot; name=&amp;quot;listView&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
     &amp;lt;widget class=&amp;quot;QPushButton&amp;quot; name=&amp;quot;btnAdd&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;property name=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;string&amp;gt;Add&amp;lt;/string&amp;gt;&lt;br /&gt;
      &amp;lt;/property&amp;gt;&lt;br /&gt;
     &amp;lt;/widget&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
   &amp;lt;/layout&amp;gt;&lt;br /&gt;
  &amp;lt;/widget&amp;gt;&lt;br /&gt;
  &amp;lt;widget class=&amp;quot;QMenuBar&amp;quot; name=&amp;quot;menubar&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;property name=&amp;quot;geometry&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect&amp;gt;&lt;br /&gt;
     &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
     &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
     &amp;lt;width&amp;gt;232&amp;lt;/width&amp;gt;&lt;br /&gt;
     &amp;lt;height&amp;gt;20&amp;lt;/height&amp;gt;&lt;br /&gt;
    &amp;lt;/rect&amp;gt;&lt;br /&gt;
   &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;widget class=&amp;quot;QMenu&amp;quot; name=&amp;quot;menuFile&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;title&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;File&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;addaction name=&amp;quot;actionSave&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/widget&amp;gt;&lt;br /&gt;
   &amp;lt;addaction name=&amp;quot;menuFile&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/widget&amp;gt;&lt;br /&gt;
  &amp;lt;widget class=&amp;quot;QStatusBar&amp;quot; name=&amp;quot;statusBar&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;action name=&amp;quot;actionSave&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;property name=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;Save&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;/action&amp;gt;&lt;br /&gt;
 &amp;lt;/widget&amp;gt;&lt;br /&gt;
 &amp;lt;resources/&amp;gt;&lt;br /&gt;
 &amp;lt;connections/&amp;gt;&lt;br /&gt;
&amp;lt;/ui&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMakeLists.txt==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 2.6)&lt;br /&gt;
&lt;br /&gt;
PROJECT(ListViewSubclass)&lt;br /&gt;
&lt;br /&gt;
FIND_PACKAGE(Qt4 REQUIRED)&lt;br /&gt;
INCLUDE(${QT_USE_FILE})&lt;br /&gt;
&lt;br /&gt;
QT4_WRAP_UI(ListViewSubclass_UI form.ui)&lt;br /&gt;
QT4_WRAP_CPP(ListViewSubclass_MOC form.h ComboBoxDelegate.h)&lt;br /&gt;
&lt;br /&gt;
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})&lt;br /&gt;
&lt;br /&gt;
ADD_EXECUTABLE(ListViewSubclass main.cpp form.h form.cpp ComboBoxDelegate.cpp ${ListViewSubclass_UI} ${ListViewSubclass_MOC})&lt;br /&gt;
TARGET_LINK_LIBRARIES(ListViewSubclass ${QT_LIBRARIES})&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daviddoria</name></author>	</entry>

	</feed>