始终在QTableView的单元格中显示QComboBox

Bobombe

我有一个带有关联模型的QTableView。我想在第三列的每个单元格中都有一个QComboBox。

我使用了如下页所示的QItemDelegate:https ://wiki.qt.io/Combo_Boxes_in_Item_Views 它可以工作,但是只有在双击单元格后才会显示组合框,用户必须再次单击以显示可能值的列表。这有点不方便。

有没有办法使组合框始终可见?

我正在尝试使用openPersistentEditor方法,但目前无法正常使用...

有一点代码接近我的代码(ComboBoxItemDelegate与之前链接的示例相同):

MonWidget::MonWidget() : _ui(new Ui::MonWidget())
{
    // ...

    // Links Model
    _linksModel = new QStandardItemModel(this);

    // Links Headers
    QStringList linksTableViewHeader  << "Name" << "Path" << "Version";
    _linksModel->setHorizontalHeaderLabels(linksTableViewHeader) ;

    // Create itemDelegate for linksView
    _itemDelegate = new ComboBoxItemDelegate(_ui->_linksView);

    // Set the links model on the links table view
    _ui->_linksView->setModel(_linksModel);
    _ui->_linksView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
    _ui->_linksView->horizontalHeader()->setStretchLastSection(true);
    _ui->_linksView->horizontalHeader()->setMinimumSectionSize(100);
    _ui->_linksView->setSelectionBehavior(QAbstractItemView::SelectRows);
    _ui->_linksView->setItemDelegate(_itemDelegate);
}
// AddLinksInListView : method called when I add some rows ...
void MonWidget::AddLinksInListView(QList<DataItem*> listLinks)
{
    int j=0;
    int initialLinksNumber = _linksModel->rowCount();

    // For each link, add a row with the link information
    for (int row=initialLinksNumber; row<(initialLinksNumber + listLinks.size()) ; row++)
    {
        for (int column = 0; column < _linksModel->columnCount(); column++) {
            //item used to display information for each column in the table view of links contained in the collection
            QStandardItem *item=0;

            switch(column)
            {
                case MonWidget::NAME:
                {
                    item = new QStandardItem(listLinks.at(j)->data(MonWidget::NAME).toString());
                    _linksModel->setItem(row, column, item);
                    break;
                }
                case MonWidget::PATH:
                {
                    item = new QStandardItem(listLinks.at(j)->data(MonWidget::PATH).toString());
                    _linksModel->setItem(row, column, item);
                    break;
                }
                case MonWidget::VERSION:
                {
                    item = new QStandardItem(listLinks.at(j)->data(MonWidget::PATH).toString());
                    _linksModel->setItem(row, column, item);
                    _ui->_linksView->openPersistentEditor(_linksModel->index(row, column));
                    break;
                }
            }
        }
        j++;
    }
}
协会

是的,有一种方法可以使用openPersistentEditor假设您的模型名为myModel

YourDelegate* comboDelegate = new YourDelegate(this);
setItemDelegateForColumn(2, comboDelegate); // delegate set for the third column

...
// when adding a new line, use this.
// The combo box will be always visible
openPersistentEditor(myModel->index(iRow, 1));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用QCombobox选择来更新QTableView单元格?

查找包含值的单元格的索引并在QTableView中突出显示所有这些单元格

如何在QTableView单元格中显示具有原始大小比例的图像?

选择单元格后,更改QTableView中图标的颜色突出显示

QStyledItemDelegate在QTableView中显示QComboBox

在 QTreeview 特定单元格中添加 QCombobox

在QTableView单元格中绘制可调整的文本

修改QTableView PYQT5中的单元格

如何从单元格 QTableView 中获取纯文本

qtableview 中不可编辑的单元格

QTableview,PySide2中单元格的背景颜色

如何使用pyside在QtableView单元格中设置数据

在QTableView中编辑单元格时,QtVirtualKeyboard焦点问题

如何通过qAbstractTableModel的子类在QTableView的一个单元格中显示QVector3D

表中的第一个单元格始终为空。仅在第二个单元格中显示-目标c

快速显示单元格中的文本

在Matlab中显示单元格的输出

在单元格VBA中显示公式

突出显示jtable中的单元格

在表格单元格中显示图像

在 Excel 的单元格中显示总和

始终回显多个单元格,该单元格是表(php)中5的倍数

在QTableView单元格的中心绘制QPixmap

获取QTableView单元格值

始终使用Apache Poi在Excel单元格中显示两个小数点

如何在R中的热图单元格中显示数字单元格值

根据单元格范围中存在的字母突出显示列中的单元格

在单个单元格中显示页眉页脚和单元格?

如何在swift中显示靠近每个单元格的Collectionview单元格