QT模拟鼠标自动点击:2-捕获坐标到TableView

1. 先看下完成后的效果,虽然丑,自己用所以懒的调了,就这样吧

 2. 思路也很简单,设置坐标和延迟执行时间,然后每次的动作都录入到TableView里面,执行的时候让它顺序执行,所以第一步就是添加TableView到UI里面,然后将它初始化。

void MoveMouse::InitTabView()
{
    //设置网格线
    ui->tableView->setShowGrid(true);
    //网格线画笔
    ui->tableView->setGridStyle(Qt::SolidLine);

    //设置列名
    QStringList columnList;
    columnList.append("坐标");
    columnList.append("延迟时间");
    pItemModel->setHorizontalHeaderLabels(columnList);

    ui->tableView->setModel(pItemModel);
}

3. 设置按钮事件,将数据塞入TableView

void MoveMouse::on_setBton_clicked()
{
    if(ui->xEdit->text().isEmpty()
            || ui->yEdit->text().isEmpty()
            || ui->delayEdit->text().isEmpty())
    {
        QMessageBox qMessage(QMessageBox::NoIcon, "Warning", "坐标和延迟时间不能为空!");
        qMessage.exec();
        return;
    }

    QString qTempStr;
    qTempStr = ui->xEdit->text() + "," + ui->yEdit->text();

    QList<QStandardItem*> list;
    list << new QStandardItem(qTempStr) << new QStandardItem(ui->delayEdit->text());
    pItemModel->insertRow(0, list);
}

4. 删除的时候发现可以多选,多选删除在这里我用不到,所以先按照单条实现

void MoveMouse::on_removeBton_clicked()
{
    QModelIndex index;
    index = ui->tableView->currentIndex();

    ui->tableView->model()->removeRow(index.row());
}

5. 当然还是要禁止多选的,在TableView初始化里面加上限制

    //设置只能选中整行
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    //设置只能选中一行
    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);

6. 从TableView中获取数据然后执行,鼠标点击事件就不放了:

        //获取表格行数
        int iRowNum = ui->tableView->model()->rowCount();

        for ( int i = 0; i < iRowNum; i++ )
        {
            //获取坐标列
            QModelIndex coordinateIndex = ui->tableView->model()->index(i, 0);
            QString coordinateStr = ui->tableView->model()->data(coordinateIndex).toString();
            QStringList coordinateStrList = coordinateStr.split(',');
            //鼠标移动
            QCursor::setPos(coordinateStrList[0].toUInt(), coordinateStrList[1].toUInt());

            //获取延迟时间
            QModelIndex delayIndex = ui->tableView->model()->index(i, 1);
            QString delayStr = ui->tableView->model()->data(delayIndex).toString();
            DelaySecond(delayStr.toUInt() * 1000);

            //鼠标点击
            SimulateLeftClick();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值