Qt_C++ 各个控件之表格控件TableWidget

Item Widget(Item-based):

TableWidget表格控件:

        1.设置表的列数setColumnCount

//设置表的列数
ui->tableWidget->setColumnCount(3);

        2.设置表头setHorizontalHeaderLabels

     //设置表头
    QStringList n1;
    n1<<"名称"<<"年龄"<<"性别";
    ui->tableWidget->setHorizontalHeaderLabels(n1);

        3.设置行数 setRowCount

     //设置行数
    ui->tableWidget->setRowCount(3);

        4.像表格中添加内容item

     QStringList namelist;
    namelist<<"喜羊羊"<<"懒洋洋"<<"美羊羊";

    QList<QString> age;//int-->string QString::number(9)
    age<<"8"<<"6"<<"7";

    QStringList sexlist;
    sexlist<<"雄"<<"雄"<<"雌";
    for(int j=0;j<3;++j)
    {
        for(int i=0;i<3;++i)
        {
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(namelist[i]));

        }
        j++;
        for(int i=0;i<3;++i)
        {
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(age[i]));
        }
        j++;
        for(int i=0;i<3;++i)
        {
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(sexlist[i]));
        }

    }

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个完整的实现表格控件首列显示树形控件代理的C++代码示例: ```cpp #include <QtWidgets/QApplication> #include <QtWidgets/QTableWidget> #include <QtWidgets/QHeaderView> #include <QtWidgets/QTreeView> #include <QtWidgets/QStyledItemDelegate> #include <QtCore/QModelIndex> class TreeDelegate : public QStyledItemDelegate { public: QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override { QTreeView* treeView = new QTreeView(parent); return treeView; } void setEditorData(QWidget* editor, const QModelIndex& index) const override { QTreeView* treeView = static_cast<QTreeView*>(editor); treeView->setModel(index.model()); treeView->setRootIndex(index); treeView->expandAll(); } void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override { QTreeView* treeView = static_cast<QTreeView*>(editor); QModelIndexList selectionList = treeView->selectionModel()->selectedIndexes(); QModelIndex selectionIndex = selectionList.at(0); QVariant data = selectionIndex.data(Qt::DisplayRole); model->setData(index, data); } void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override { editor->setGeometry(option.rect); } }; int main(int argc, char* argv[]) { QApplication app(argc, argv); QTableWidget tableWidget; tableWidget.setColumnCount(2); tableWidget.setRowCount(5); tableWidget.setHorizontalHeaderLabels({ "Name", "Age" }); for (int i = 0; i < tableWidget.rowCount(); ++i) { QTableWidgetItem* nameItem = new QTableWidgetItem(QString("Item %1").arg(i + 1)); tableWidget.setItem(i, 0, nameItem); QTableWidgetItem* ageItem = new QTableWidgetItem(QString::number(i + 10)); tableWidget.setItem(i, 1, ageItem); } TreeDelegate treeDelegate; tableWidget.setItemDelegateForColumn(0, &treeDelegate); tableWidget.header()->setSectionResizeMode(0, QHeaderView::Stretch); tableWidget.show(); return app.exec(); } ``` 在上面的代码中,首先定义了一个TreeDelegate类,继承自QStyledItemDelegate,实现了其createEditor()、setEditorData()、setModelData()和updateEditorGeometry()四个方法。其中,createEditor()方法创建了一个QTreeView控件,并将其作为编辑器返回;setEditorData()方法将数据源中的数据设置QTreeView控件中;setModelData()方法将QTreeView控件中的数据更新到数据源中;updateEditorGeometry()方法设置编辑器的位置和大小。 然后,在main函数中,创建了一个QTableWidget控件设置表格的行列数、水平表头和单元格数据,并将TreeDelegate设置为首列的代理,最后显示QTableWidget控件。 通过以上代码,就可以实现表格控件首列显示树形控件代理的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值