QTableWidget,QListWidget,QTreeWidget

QTableView & QTableWidget

QTableWidget是QTableView的子类;主要的区别是:
QTableView可以使用自定义的数据模型来显示内容,先要通过setModel来绑定数据源;
QTableWidget则只能使用标准的数据模型,不需要数据源,将逐个单元格内的信息填好即可。

list,Tree同理。

QTableWidget:

    QTableWidget tableWidget;
    tableWidget.setColumnCount(3);
    tableWidget.setRowCount(5);

    QStringList headers;
    headers << "ID" << "Name" << "Age";
    tableWidget.setHorizontalHeaderLabels(headers);

    tableWidget.setItem(0, 0, new QTableWidgetItem(QString("0001")));
    tableWidget.setItem(1, 0, new QTableWidgetItem(QString("0002")));
    tableWidget.setItem(2, 0, new QTableWidgetItem(QString("0003")));
    tableWidget.setItem(3, 0, new QTableWidgetItem(QString("0004")));
    tableWidget.setItem(4, 0, new QTableWidgetItem(QString("0005")));
    tableWidget.setItem(0, 1, new QTableWidgetItem(QString("20100112")));

    tableWidget.show();

建立了一个5*3的表格,并填充了一些数据。

QTreeWidget

QTreeWidget treeWidget;

QStringList headers;
headers << "Name" << "Number";
treeWidget.setHeaderLabels(headers);

QStringList rootTextList;
rootTextList << "Root" << "0";
QTreeWidgetItem *root = new QTreeWidgetItem(&treeWidget, rootTextList);

new QTreeWidgetItem(root, QStringList() << QString("Leaf 1") << "1");
QTreeWidgetItem *leaf2 = new QTreeWidgetItem(root,
                                   QStringList() << QString("Leaf 2") << "2");
leaf2->setCheckState(0, Qt::Checked);

QList<QTreeWidgetItem *> rootList;
rootList << root;
treeWidget.insertTopLevelItems(0, rootList);

treeWidget.show();

setHeaderLabels(),用来设置header。
QList<> 是一个列表模板类。
QTreeWidgetItem()有多种重载形式。

QListWidget

    label = new QLabel(this);
    label->setFixedWidth(70);

    listWidget = new QListWidget(this);
//添加item
    new QListWidgetItem(QIcon(QPixmap("../images/1207021.png")), tr("21"), listWidget);
    new QListWidgetItem(QIcon(QPixmap("../images/1207022.png")), tr("Firefox"), listWidget);

    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207023.png")), tr("IE")));
    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207024.png")), tr("Netscape")));
    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207025.png")), tr("Opera")));
    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207026.png")), tr("Safari")));
    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207031.png")), tr("TheWorld")));
    listWidget->addItem(new QListWidgetItem(QIcon(QPixmap("../images/1207035.png")), tr("Traveler")));

    QListWidgetItem *newItem = new QListWidgetItem;
    newItem->setIcon(QIcon(QPixmap("../images/1207029.png")));
    newItem->setText(tr("Maxthon"));
    listWidget->insertItem(3, newItem);

    listWidget->setViewMode(QListView::IconMode);

    QHBoxLayout *layout = new QHBoxLayout;
    //添加widget
    layout->addWidget(label);
    layout->addWidget(listWidget);

    setLayout(layout);

    connect(listWidget, SIGNAL(currentTextChanged(QString)),
             label, SLOT(setText(QString)));

下午在做老师给的demo
进度是:
实现了双击则在该行该列出现按钮。

遇见问题:
一开始打算用鼠标双击事件做该功能,自己写了一个
void mouseDoubleClickEvent(QMouseEvent *),但QTableWidget 不响应该事件。

之后想用信号槽机制。恰好QTableWidget 的signals 里面有
void cellDoubleClicked(int row, int column),就自定义实现了一个槽函数DoubleClick()。
QObject::connect(tableWidget,SIGNAL(cellDoubleClicked(int,int)),this,SLOT(DoubleClick()));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值