• 9165阅读
  • 3回复

在QDialog中无法使用fcntl.h中的open函数,请多多指教! [复制链接]

上一主题 下一主题
离线qiang1985
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-31
— 本帖被 XChinux 从 论坛公告栏 移动到本区(2009-08-31) —
错误信息:
/home/qiang/projects/qt4/leds/leds.cpp:36: 错误: 对‘leds::open(const char [10], int)’的调用没有匹配的函数
/usr/local/Trolltech/QtEmbedded-4.5.1/include/QtGui/qdialog.h:99: 附注: 备选为: void QDialog::open()

源码:
leds.cpp

#include "leds.h"
#include "ui_leds.h"

//qiang
#include <linux/errno.h>    //包含:ENODEV
#include <sys/fcntl.h>          //包含设备操作函数:open,close...

#include <QMessageBox>

#define DEVICE_NAME "/dev/leds"    //定义设备名:和驱动的对应好!

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

    //对话框初始化
    ret=-ENODEV;
}

leds::~leds()
{
    delete ui;
}
void leds::on_pushButton_Init_clicked()
{
    fd = open(DEVICE_NAME,O_RDONLY);    //打开设备:O_RDONLY-只读;O_RDWR:读写
}

void leds::on_pushButton_Led1On_clicked()
{

}


led.h
#ifndef LEDS_H
#define LEDS_H

#include <QtGui/QDialog>

namespace Ui
{
    class leds;
}

class leds : public QDialog
{
    Q_OBJECT

public:
    leds(QWidget *parent = 0);
    ~leds();

private:
    Ui::leds *ui;

private slots:
    void on_pushButton_Init_clicked();
    void on_pushButton_Led1On_clicked();

//qiang
public:
    int ret;
    int fd;
private:


};

#endif // LEDS_H
离线qiang1985
只看该作者 1楼 发表于: 2009-08-31
我的编译环境是Ubuntu8.10下用的QTCreator+QTE4.5!
离线zheng501gf

只看该作者 2楼 发表于: 2010-07-16
我也遇到同样的问题!
请问你是怎么解决的??
离线dbzhang800

只看该作者 3楼 发表于: 2010-07-16
引用第2楼zheng501gf于2010-07-16 15:09发表的  :
我也遇到同样的问题!
请问你是怎么解决的??

你的 open 在 全局命名空间,前面加双冒号 "::open(...)",建议有时间找本C++的书看看
快速回复
限100 字节
 
上一个 下一个