找回密码
 立即注册
收起左侧

错误:请求从 ‘int’ 转...

2
回复
8222
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2014-8-5 11:14:15 显示全部楼层 |阅读模式
1Qter豆
本人初学QT编程,结合自己用的友善之臂tiny4412开发板编了一个三个AD通道的采集程序,运行发现错误,不知道怎么解决。
mainwindow.cpp:72: 错误:请求从 ‘int’ 转换到非标量类型 ‘QList<QByteArray>’
程序如下
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fs.h>
#include <errno.h>
#include <string.h>

#define ADC_SET_CHANNEL         0xc000fa01
#define ADC_SET_ADCTSC          0xc000fa02

/*
1) cd Linux-2.6.38
2) make menuconfig
3) enter Device Drivers--->Input device support  --->Touchscreens
4) unselect "S3C touchscreen driver for Mini6410"
5) make
*/

#define CHANNELCOUNT 6


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

int MainWindow::toDigit(int argc, char* argv[])
{
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
    ui->lineEdit_3->clear();
    QString oxygen1,wendu,ph;

    int channels[CHANNELCOUNT] = {1,2,3}; //for 6410
    // int channels[CHANNELCOUNT] = {0,1,6,7,8,9}; //for 210
    int channel;
    int i=0;
        fprintf(stderr, "press Ctrl-C to stop\n");
        int fd = open("/dev/adc", 0);
        if (fd < 0) {
                perror("open ADC device:");
                return 1;
        }

    char output[255];
        for(;;) {
        puts("\033[2J");
        output[0] = 0;
        for (i=0; i<CHANNELCOUNT; i++) {
            channel = channels[i];
         //   if (ioctl(fd, ADC_SET_CHANNEL, channel) < 0) {
         //       perror("Can't set channel for /dev/adc!");
         //       close(fd);
         //       return 1;
        //    }

            char buffer[30];
            int len = read(fd, buffer, sizeof buffer -1);
            if (len > 0) {
                buffer[len] = '\0';
                int value = -1;
                sscanf(buffer, "%d", &value);
                QList<QString> AD= value;
                oxygen1 = AD[0];
                ui->lineEdit->setText(oxygen1);
                wendu = AD[1];
                ui->lineEdit_2->setText(wendu);
                ph = AD[2];
                ui->lineEdit_3->setText(ph);
            } else {
                ::close(fd);
                return 1;
            }
        }
        usleep(300* 1000);
    }
        ::close(fd);
}

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

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent:anguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}


最佳答案

查看完整内容

看错误像是你把int赋给了QString 转下吧
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2014-8-5 11:14:16 显示全部楼层
看错误像是你把int赋给了QString 转下吧
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-8-9 20:14:57 显示全部楼层
  1. QList<QString> AD= value;
复制代码
你把一个int类型值赋给了一个装String的列表,qt不能自动把int转成String的,你可以这样写
  1. QList<QString> AD;
  2. AD.append(QString::number(value));
复制代码
QString::number方法就是将int类型的值转成QString  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了