十一、项目部件ItemWidget

 十一、项目部件ItemWidget

11.1 清单控件QListWidget

首先我们创建Widget工程。

首先设置widget.ui。

这次我们利用QListWidgetItem类来应用清单控件。

widget.cpp

首先创建一个QListWidgetItem对象,把它加入到ui中去。

    QListWidgetItem *lwi=new QListWidgetItem("沁园春-雪");
    ui->listWidget->addItem(lwi);

    //居中
    lwi->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);

对于setTextAlignment函数是与setLabelAlignment函数非常相似

添加数据。

    QStringList slist;
    slist<<"1:北国风光,千里冰封,万里雪飘。";
    slist<<"2:望长城内外,惟余莽莽;大河上下,顿时滔滔。";

    ui->listWidget->addItems(slist);

 值得注意的是addItem和addItems的区别。

void QListWidget:: addItem (const QString label )

插入项采用文本 label 在列表 Widget 末尾。

void QListWidget:: addItem ( QListWidgetItem item )

插入 item 在列表 Widget 末尾。

警告: QListWidgetItem 只可以被添加到 QListWidget 一次。添加相同 QListWidgetItem 多次到 QListWidget 将产生未定义行为。

另请参阅 insertItem ().

void QListWidget:: addItems (const QStringList labels )

插入项采用文本 labels 在列表 Widget 末尾。

另请参阅 insertItems ().

完整代码

#include "widget.h"
#include "ui_widget.h"

#include<QListWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QListWidgetItem *lwi=new QListWidgetItem("沁园春-雪");
    ui->listWidget->addItem(lwi);

    //居中
    lwi->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);

    QStringList slist;
    slist<<"1:北国风光,千里冰封,万里雪飘。";
    slist<<"2:望长城内外,惟余莽莽;大河上下,顿时滔滔。";

    ui->listWidget->addItems(slist);


}

Widget::~Widget()
{
    delete ui;
}

11.2 树形控件QTreeWidget

同样,首先设置widget.ui文件,因为我们应QTreeWidgetItem类应用树形控件。

widget.ui

widget.cpp

添加一级节点。

    //添加一级节点
    QTreeWidgetItem *tei1=new QTreeWidgetItem(ui->treeWidget);
    tei1->setText(0,"清华大学");
    tei1->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(tei1);

 发现有个表头,隐藏它。

    //隐藏表头
    ui->treeWidget->setHeaderHidden(true);
    //展开节点
    ui->treeWidget->expandAll();

 对于setCheckState看这篇文章

void QTreeWidget::addTopLevelItem(QTreeWidgetItem *item):

将项目作为顶级项目追加到小部件中。

void setHeaderHidden(bool hide):

此属性保留是否显示标题。
如果此属性为true,则不显示标题,否则显示标题。默认值为false。

void QTreeView::expandAll():

扩展所有可扩展的物品。
警告:如果模型包含大量项目,此函数将需要一些时间来执行。

添加二级节点。

    QTreeWidgetItem *item11=new QTreeWidgetItem(tei1);
    item11->setText(0,"清华大学建筑学院");
    item11->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item12=new QTreeWidgetItem(tei1);
    item12->setText(0,"清华大学建筑学院");
    item12->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item13=new QTreeWidgetItem(tei1);
    item13->setText(0,"清华大学土木学院");
    item13->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item14=new QTreeWidgetItem(tei1);
    item14->setText(0,"清华大学信息科学技术学院");
    item14->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item15=new QTreeWidgetItem(tei1);
    item15->setText(0,"清华大学马克思主义学院");
    item15->setCheckState(0,Qt::Checked);
    

完整代码

#include "widget.h"
#include "ui_widget.h"

#include<QListWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //添加一级节点
    QTreeWidgetItem *tei1=new QTreeWidgetItem(ui->treeWidget);
    tei1->setText(0,"清华大学");
    tei1->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(tei1);

    //隐藏表头
    ui->treeWidget->setHeaderHidden(true);
    //展开节点
    ui->treeWidget->expandAll();

    QTreeWidgetItem *item11=new QTreeWidgetItem(tei1);
    item11->setText(0,"清华大学建筑学院");
    item11->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item12=new QTreeWidgetItem(tei1);
    item12->setText(0,"清华大学建筑学院");
    item12->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item13=new QTreeWidgetItem(tei1);
    item13->setText(0,"清华大学土木学院");
    item13->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item14=new QTreeWidgetItem(tei1);
    item14->setText(0,"清华大学信息科学技术学院");
    item14->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item15=new QTreeWidgetItem(tei1);
    item15->setText(0,"清华大学马克思主义学院");
    item15->setCheckState(0,Qt::Checked);



}

Widget::~Widget()
{
    delete ui;
}

11.3 表控件QTableWidget

还是一样先设置widget.ui文件

 widget.cpp

设置行和列

    //设置行和列
    ui->tableWidget->setRowCount(3);
    ui->tableWidget->setColumnCount(2);

设置表头

    //设置水平表头
    QStringList sl;
    sl<<"学号"<<"高考分数";
    ui->tableWidget->setHorizontalHeaderLabels(sl);

 添加数据

    QList<QString> no;
    no<<"123"<<"456"<<"789";
    QList<QString> score;
    score<<"100"<<"200"<<"300";

    for(int i=0;i<3;i++)
    {
        int col=0;
        QTableWidgetItem *twi=new QTableWidgetItem(no.at(i));
        ui->tableWidget->setItem(i,col++,twi);
        ui->tableWidget->setItem(i,col,new QTableWidgetItem(score.at(i)));
    }

void QTableWidget::setItem(int row, int column, QTableWidgetItem *item):

将给定行和列的项设置为item。
表获得项的所有权。
注意,如果启用了排序(请参阅sortingEnabled)并且column是当前排序列,则该行将被移动到由item确定的排序位置。
如果你想设置特定行的几个项(比如,通过在循环中调用setItem()),你可能想在这样做之前关闭排序,然后再打开它;这将允许您对同一行中的所有项使用相同的row参数(即setItem()不会移动该行)。

完整代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置行和列
    ui->tableWidget->setRowCount(3);
    ui->tableWidget->setColumnCount(2);

    //设置水平表头
    QStringList sl;
    sl<<"学号"<<"高考分数";
    ui->tableWidget->setHorizontalHeaderLabels(sl);

    QList<QString> no;
    no<<"123"<<"456"<<"789";
    QList<QString> score;
    score<<"100"<<"200"<<"300";

    for(int i=0;i<3;i++)
    {
        int col=0;
        QTableWidgetItem *twi=new QTableWidgetItem(no.at(i));
        ui->tableWidget->setItem(i,col++,twi);
        ui->tableWidget->setItem(i,col,new QTableWidgetItem(score.at(i)));
    }
}

Widget::~Widget()
{
    delete ui;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mo Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值