简体   繁体   English

如何添加QListView项目的复选框?

[英]How to add check box with QListView items?

How to add check box with QListView items? 如何添加QListView项目的复选框? I am trying but it does not appear in qlistview. 我正在尝试,但它没有出现在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. 我得到了答案,使用委托填写QListView项目中的QCheckBox。

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);

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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