简体   繁体   中英

How to add check box with QListView items?

How to add check box with QListView items? I am trying but it does not appear in qlistview. Below is my code:

for(int i = 0;i<myParent->listItem.size();i++) {
    QHash<QString, QString> hash;
    hash = myParent->listItem.at(i);      
    QStandardItem* item = new QStandardItem;
    item->setText(hash.value("text"));
    item->setCheckable(true);
     model->appendRow(item);
}
ui->listView->setModel(model);
MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{
  ui->setupUi(this);

  // Add QListWidgets in to yout ui dialog box. and that that object here as "ui->listWidget"

  QListWidgetItem * item1 = new QListWidgetItem();
  QListWidgetItem * item2 = new QListWidgetItem();
  QListWidgetItem * item3 = new QListWidgetItem();
  QListWidgetItem * item4 = new QListWidgetItem();
  QListWidgetItem * item5 = new QListWidgetItem("Text 1");


  ui->listWidget->addItem(item1);
  ui->listWidget->addItem(item2);
  ui->listWidget->addItem(item3);
  ui->listWidget->addItem(item4);
  ui->listWidget->addItem(item5);

  ui->listWidget->setItemWidget(item1,new QCheckBox("Test Widget"));
  ui->listWidget->setItemWidget(item2,new QPushButton("Test Widget"));
  ui->listWidget->setItemWidget(item3,new QRadioButton("Test Widget"));
  ui->listWidget->setItemWidget(item4,new QCheckBox("Test Widget"));


  ui->listWidget->setWindowTitle("QListWidget Add Widgets Example");

}

I got answer, use delegate to fill QCheckBox in QListView items.

void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
    {
        QStyleOptionViewItemV4 viewItemOption(option);
            const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
            QRect newRect = QStyle::alignedRect(option.direction, Qt::AlignLeft,
                                                QSize(option.decorationSize.width() + 5,option.decorationSize.height()),
                                                QRect(option.rect.x() -5, option.rect.y(),
                                                      option.rect.width() - (2 * textMargin), option.rect.height()));
            viewItemOption.rect = newRect;
        QStyledItemDelegate::paint(painter, viewItemOption, index);

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM