为了方便说明,先提出一段最简单的代码用于描述问题。
//-------------------main.cpp--------------------------------
- C/C++ code
#include <QtGui/QApplication>#include "mainwindow.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
//-------------------mainWindow.cpp--------------------------------
- C/C++ code
#include "mainwindow.h"#include <stdio.h>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ QString a; printf("aaaaaaaaaaa\n");}MainWindow::~MainWindow(){}
//-------------------mainWindow.h--------------------------------
- C/C++ code
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QtGui/QMainWindow>class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = 0); ~MainWindow();};#endif // MAINWINDOW_H
开始正题:
我写arm上的qt程序,其中主要是用到qt中的c++的原理做数据处理的部分, 用不到图形界面,但是我还是继承了QMainWindow类。用上面的最基本的框架做开始来写程序。
但是现在我的arm板是工业级的,不支持图形显示功能,我在驱动里配置了/dev/fb0 这个设备。 但是我在运行qt程序的时候显示错误,错误提示大概就是 /dev/fb0 所对应的地址映射不争确。
问题一:我想让我的qt程序不基于freambuffer。 即不继承qMainWindow类, 但是上面的QApplication、还有Q_OBJECT 是不是都基于fb的呢。 我去掉了继承的QMainWindow类。 运行程序,仍然提示“/dev/fb0 所对应的地址映射不争确。”,qt能不能做出不基于freambuffer的程序呢。求指点?
问题二:还是基于上面的问题,我能不能在配置嵌入式版本的qt的时候就把 对freambuffer这个功能给去掉呢。 或者在配置源码里面找到对freamBuffer 这个设备的检测部分的代码, 然后让检测对此部分忽略掉,这样运行程序就不报错了。 不知道这两种方法那种可行?
问题三:不知道我上面的思路有没有错误,或者我那部分的分析不正确, 或者有没有什么更好的思路能否指点一下?
------解决方案--------------------
按照你的需求,不要创建Qt GUI Application类型的工程,有Qt console 。
------解决方案--------------------
打开你的.pro文件,在后面加入:
QT -= gui
CONFIG += console
把main.cpp改成这样:
- C/C++ code
#include <QCoreApplication>#include <QTimer>int main(int argc, char *argv[]){ // 创建非UI的应用入口 QCoreApplication app(argc, argv); // 创建你的主类 CTest test; // 在进入事件循环后执行 QTimer::singleShot(0, &test, SLOT(start())); // 进入事件循环 return app.exec();}