我正在尝试将这些项目制作成ComboBox
可检查。我试过这个:
http://programmingexamples.net/wiki/Qt/ModelView/ComboBoxOfCheckBoxes http://web.archive.org/web/20180816153248/http://programmingexamples.net/wiki/Qt/ModelView/ComboBoxOfCheckBoxes
我在哪里子类化QStandardItemModel
并重新实施了flags()
功能使项目可检查。然后我将此模型添加到ComboBox
。不幸的是,项目中没有出现复选框。谁能看到我哪里出了问题?
您是否设置了检查状态并使它们可检查?
在我下面的示例中,这一行至关重要:
item->setData(Qt::Unchecked, Qt::CheckStateRole);
如果省略,复选框将不会呈现,因为没有要呈现的有效检查状态。
该示例显示了组合框、列表和表格中的复选框,因为我一开始也无法让它工作,所以我尝试了不同的视图。
test.cpp
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QStandardItemModel model(3, 1); // 3 rows, 1 col
for (int r = 0; r < 3; ++r)
{
QStandardItem* item = new QStandardItem(QString("Item %0").arg(r));
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setData(Qt::Unchecked, Qt::CheckStateRole);
model.setItem(r, 0, item);
}
QComboBox* combo = new QComboBox();
combo->setModel(&model);
QListView* list = new QListView();
list->setModel(&model);
QTableView* table = new QTableView();
table->setModel(&model);
QWidget container;
QVBoxLayout* containerLayout = new QVBoxLayout();
container.setLayout(containerLayout);
containerLayout->addWidget(combo);
containerLayout->addWidget(list);
containerLayout->addWidget(table);
container.show();
return app.exec();
}
test.pro
QT=core gui
SOURCES=test.cpp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)