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.