项视图类

1.只读的QListWidget

演示的是一个允许用户在列表中选择流程图符号的简单对话框开始,每个项都由一个图标,一段文本和一个唯一的ID组成。

FlowChartSymbolPicker::FlowChartSymbolPicker(
        const QMap<int, QString> &symbolMap, QWidget *parent)
    : QDialog(parent)
{
    id = -1;//可以通过调用selectedId()获得一个选中ID,若用户没有选中则返回-1.

    listWidget = new QListWidget;//构造项视图窗口部件
    listWidget->setIconSize(QSize(60, 60));

    QMapIterator<int, QString> i(symbolMap);
    while (i.hasNext()) {
        i.next();
        QListWidgetItem *item = new QListWidgetItem(i.value(),listWidget);
        item->setIcon(iconForSymbol(i.value()));//设置项图标
        item->setData(Qt::UserRole, i.key());//设置项的文本
    }

QIcon FlowChartSymbolPicker::iconForSymbol(const QString &symbolName)
{
    QString fileName = ":/images/" + symbolName.toLower();
    fileName.replace(' ', '-');
    return QIcon(fileName);
}

void FlowChartSymbolPicker::done(int result)
{
    id = -1;
    if (result == QDialog::Accepted) {
        QListWidgetItem *item = listWidget->currentItem();
        if (item)
            id = item->data(Qt::UserRole).toInt();
    }
    QDialog::done(result);
}

2.可编辑数据,此刻用的是QTableWidget类

CoordinateSetter::CoordinateSetter(QList<QPointF> *coords,
                                   QWidget *parent)
    : QDialog(parent)
{
    coordinates = coords;

    tableWidget = new QTableWidget(0, 2);//构造表格视图窗口部件
    tableWidget->setHorizontalHeaderLabels(QStringList() << tr("X") << tr("Y"));//第一行标题
	//从第0行开始添加
    for (int row = 0; row < coordinates->count(); ++row) {
        QPointF point = coordinates->at(row);
        addRow();
        tableWidget->item(row, 0)->setText(QString::number(point.x()));//每一个项都使用QTableWidgetItem表示。默认情况下,QTableWidget允许编辑
        tableWidget->item(row, 1)->setText(QString::number(point.y()));
    }

void CoordinateSetter::done(int result)
{
    if (result == QDialog::Accepted) {
        coordinates->clear();//当点击OK的时候,清空对话框坐标,并根据QTableWidget的所有项创建一个新的坐标集
        for (int row = 0; row < tableWidget->rowCount(); ++row) {
            double x = tableWidget->item(row, 0)->text().toDouble();
            double y = tableWidget->item(row, 1)->text().toDouble();
            coordinates->append(QPointF(x, y));
        }
    }
    QDialog::done(result);
}

void CoordinateSetter::addRow()
{
    int row = tableWidget->rowCount();

    tableWidget->insertRow(row);

    QTableWidgetItem *item0 = new QTableWidgetItem;
    item0->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
    tableWidget->setItem(row, 0, item0);//插入QTableWidgetItem,这里为这一行的第一列

    QTableWidgetItem *item1 = new QTableWidgetItem;
    item1->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
    tableWidget->setItem(row, 1, item1);

    tableWidget->setCurrentItem(item0);
}

存储坐标集

QList<QPointF> coordinates;
    coordinates << QPointF(0.0, 0.9)
                << QPointF(0.2, 11.0)
                << QPointF(0.4, 15.4)
                << QPointF(0.6, 12.9)
                << QPointF(0.8, 8.5)
                << QPointF(1.0, 7.1)
                << QPointF(1.2, 4.0)
                << QPointF(1.4, 13.6)
                << QPointF(1.6, 22.2)
                << QPointF(1.8, 22.2);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
Qt 视图是为了方便用户在 GUI 界面上显示和操作数据而设计的。常见的 Qt 视图有 QListView、QTableView、QTreeView 等。下面介绍一些常用的成员函数: 1. setModel():设置视图的数据模型,数据模型是 Qt 中 MVC(Model-View-Controller)模式的核心。 2. setSelectionModel():设置视图的选择模型,选择模型是管理视图中哪些被选中的对象。 3. setEditTriggers():设置视图的编辑触发方式,例如双击、单击等。 4. setSelectionMode():设置视图的选择模式,包括单选、多选等。 5. setSortingEnabled():设置是否启用视图中的排序功能。 6. setHorizontalHeader()、setVerticalHeader():设置视图中的水平和垂直表头。 7. setColumnWidth()、setRowHeight():设置列宽和行高。 8. scrollTo():将指定的滚动到视图中心。 9. indexAt():返回当前鼠标位置下的的索引。 10. selectedIndexes():返回当前选中的索引列表。 11. resizeColumnsToContents()、resizeRowsToContents():自适应调整列宽和行高。 12. setItemDelegate():设置的代理,用于自定义的外观和行为。 13. horizontalScrollBar()、verticalScrollBar():返回水平和垂直滚动条对象。 14. setHorizontalScrollMode()、setVerticalScrollMode():设置水平和垂直滚动条的显示模式。 15. setDragEnabled()、setAcceptDrops():设置是否支持拖放操作。 总之,Qt 视图提供了丰富的功能和接口,可以满足不同的需求。开发者可以根据自己的具体情况选择合适的视图,并灵活运用其成员函数来实现所需的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值