QListView中的Exclusive复选框
Exclusive checkbox in QListView
我正在尝试将独占复选框作为QListView
项。我使用QStandardItemModel
作为QStandardItem
的模型。
我正在动态地将项目添加到列表中,并将其设置为可检查:
QStandardItem *item = new QStandardItem(treeView->model()->data(index).toString());
item->setCheckable(true);
m_categoriesModel->appendRow(item);
我尝试将所有项目连接到QSignalMapper
,但QStandardItem
没有checked(bool)
信号(基本上没有)。
有什么办法解决这个问题吗?
您可以按照下面描述的方式进行。首先将ListView的点击信号连接到将处理您的项目点击的插槽。其次,在插槽中,您可以从QModelIndex获取项目并检查项目的状态。下面是伪代码:
例如,在ListView的构造函数中:
connect(this, SIGNAL(clicked(QModelIndex)), this, SLOT(_handleItemClicked(QModelIndex)));
ListView的插槽:
void ListView::_handleItemClicked(QModelIndex index)
{
QStandardItem* item = _model->itemFromIndex(index);
if( item->checkState() == Qt::Checked) qDebug() << "Checked!";
}
实际上有一个类可以做到这一点:QButtonGroup
它很容易使用:
QButtonGroup *group = new QButtonGroup(this);
group->setExclusive(true);//now only one will be checked at a time
//add all buttons
group->addButton(this->ui->myFirstCheckbox);
//...
至少对于手动添加的按钮。当然,您也可以将其用于模型,但这需要您在视图中找到所有复选框元素。。。
相关文章:
- 根据变量使Qt UI中的复选框为已选中/未选中
- "动态创建的事件处理程序"复选框
- 有没有办法在取消选中复选框时隐藏按钮?
- 如何删除Qt设计器中自定义插件的QString属性的"translatable"复选框?
- 设置复选框选项C++
- 如何在所有者描述的 MFC CMenu 派生菜单中显示复选框?
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 如何使复选框独占
- AccessObjectFromPoint 返回客户端对象而不是复选框
- Windows 32 API:2个复选框作为一个
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 在 QComboBox 中切换复选框
- 调整QT创建者的复选框
- 如何在C 上创建复选框过滤器
- 如何设置按钮的背景颜色,包括复选框按钮
- 使用 ffh.getFieldType() 检查复选框 == "/Btn" 与 qpdf lib
- 如何在多行文本C++的左上角显示复选框
- Win32如何制作多个复选框并以不同的方式管理它们
- QtableWidget 标题上的复选框
- QListView中的Exclusive复选框